diff --git a/pkg/deployments/README.md b/pkg/deployments/README.md index 1f8c87aef9..924c5eb5f7 100644 --- a/pkg/deployments/README.md +++ b/pkg/deployments/README.md @@ -83,7 +83,6 @@ Returns an object with all contracts from a deployment and their addresses. | Gauge Registrant V2, supporting new networks | [`20220628-gauge-adder-v2`](./tasks/20220628-gauge-adder-v2) | | Distribution Scheduler for reward tokens on gauges | [`20220707-distribution-scheduler`](./tasks/20220707-distribution-scheduler) | | Fee Distributor for veBAL holders V2 | [`20220714-fee-distributor-v2`](./tasks/20220714-fee-distributor-v2) | -| Batch Relayer V3 | [`20220720-batch-relayer-v3`](./tasks/20220720-batch-relayer-v3) | | Swap, join and exit simulations (queries) | [`20220721-balancer-queries`](./tasks/20220721-balancer-queries) | | Protocol fee percentages provider | [`20220725-protocol-fee-percentages-provider`](./tasks/20220725-protocol-fee-percentages-provider) | | Child Chain Gauge Reward Helper | [`20220812-child-chain-reward-helper`](./tasks/20220812-child-chain-reward-helper) | @@ -94,6 +93,7 @@ Returns an object with all contracts from a deployment and their addresses. | Optimism Root Gauges V2, for veBAL voting | [`20220823-optimism-root-gauge-factory-v2`](./tasks/20220823-optimism-root-gauge-factory-v2) | | Composable Stable Pools | [`20220906-composable-stable-pool`](./tasks/20220906-composable-stable-pool) | | Weighted Pool V2 | [`20220908-weighted-pool-v2`](./tasks/20220908-weighted-pool-v2) | +| Batch Relayer V4 | [`20220916-batch-relayer-v4`](./tasks/20220916-batch-relayer-v4) | ## Scripts @@ -117,7 +117,7 @@ Go to each deprecated deployment's readme file to learn more about why it is dep | Description | Task ID | | ------------------------------------------------ | --------------------------------------------------------------------------------------------------- | -| Weighted Pools of up to 8 tokens | [`20210418-weighted-pool`](./deprecated/tasks/20210418-weighted-pool) | +| Weighted Pools of up to 8 tokens | [`20210418-weighted-pool`](./deprecated/tasks/20210418-weighted-pool) | | Stable Pools of up to 5 tokens | [`20210624-stable-pool`](./tasks/deprecated/20210624-stable-pool) | | Liquidity Bootstrapping Pools of up to 4 tokens | [`20210721-liquidity-bootstrapping-pool`](./tasks/deprecated/20210721-liquidity-bootstrapping-pool) | | Meta Stable Pools with 2 tokens and price oracle | [`20210727-meta-stable-pool`](./tasks/deprecated/20210727-meta-stable-pool) | @@ -137,3 +137,4 @@ Go to each deprecated deployment's readme file to learn more about why it is dep | Arbitrum Root Gauges, for veBAL voting | [`20220413-arbitrum-root-gauge-factory`](./tasks/deprecated/20220413-arbitrum-root-gauge-factory) | | Polygon Root Gauges, for veBAL voting | [`20220413-polygon-root-gauge-factory`](./tasks/deprecated/20220413-polygon-root-gauge-factory) | | Optimism Root Gauges, for veBAL voting | [`20220628-optimism-root-gauge-factory`](./tasks/deprecated/20220628-optimism-root-gauge-factory) | +| Batch Relayer V3 | [`20220720-batch-relayer-v3`](./tasks/deprecated/20220720-batch-relayer-v3) | diff --git a/pkg/deployments/deployment-txs/goerli.json b/pkg/deployments/deployment-txs/goerli.json index f56c5b6d4b..4d0db660ed 100644 --- a/pkg/deployments/deployment-txs/goerli.json +++ b/pkg/deployments/deployment-txs/goerli.json @@ -59,5 +59,6 @@ "0xB848f50141F3D4255b37aC288C25C109104F2158": "0x068e47605db29b7f9e5a8ba8bc7075fe3beab9801b4891b8656d6845f6477721", "0x2E96068b3D5B5BAE3D7515da4A1D2E52d08A2647": "0x848ef78b49a4f66dc2e73c344491a4b37b213a5e5da30f5fafafdefa9807c1ca", "0x3b8cA519122CdD8efb272b0D3085453404B25bD0": "0xf4281462a669f2e6a10ffcee1e24e60ce807acc8cfd8fc86697050b99035f0d0", - "0x94f68b54191F62f781Fe8298A8A5Fa3ed772d227": "0x1c7435e7341b103f10e662e200b1c3a7623787630c905406c0682a7d2dd8ee16" + "0x94f68b54191F62f781Fe8298A8A5Fa3ed772d227": "0x1c7435e7341b103f10e662e200b1c3a7623787630c905406c0682a7d2dd8ee16", + "0x992b827a42ac301DF16Fedb3eBbEA59AC1DC35DE": "0xe8f2ba298653b7b0f2d0a778384f03829ff5a35dad4e97b0e3cc104d7d72ec84" } \ No newline at end of file diff --git a/pkg/deployments/tasks/20220916-batch-relayer-v4/abi/BalancerRelayer.json b/pkg/deployments/tasks/20220916-batch-relayer-v4/abi/BalancerRelayer.json new file mode 100644 index 0000000000..b8554be885 --- /dev/null +++ b/pkg/deployments/tasks/20220916-batch-relayer-v4/abi/BalancerRelayer.json @@ -0,0 +1,67 @@ +[ + { + "inputs": [ + { + "internalType": "contract IVault", + "name": "vault", + "type": "address" + }, + { + "internalType": "address", + "name": "libraryAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "getLibrary", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVault", + "outputs": [ + { + "internalType": "contract IVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "data", + "type": "bytes[]" + } + ], + "name": "multicall", + "outputs": [ + { + "internalType": "bytes[]", + "name": "results", + "type": "bytes[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } +] \ No newline at end of file diff --git a/pkg/deployments/tasks/20220916-batch-relayer-v4/abi/BatchRelayerLibrary.json b/pkg/deployments/tasks/20220916-batch-relayer-v4/abi/BatchRelayerLibrary.json new file mode 100644 index 0000000000..600ff1373e --- /dev/null +++ b/pkg/deployments/tasks/20220916-batch-relayer-v4/abi/BatchRelayerLibrary.json @@ -0,0 +1,1084 @@ +[ + { + "inputs": [ + { + "internalType": "contract IVault", + "name": "vault", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "wstETH", + "type": "address" + }, + { + "internalType": "contract IBalancerMinter", + "name": "minter", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approveVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "enum IVault.SwapKind", + "name": "kind", + "type": "uint8" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "assetInIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "assetOutIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "internalType": "struct IVault.BatchSwapStep[]", + "name": "swaps", + "type": "tuple[]" + }, + { + "internalType": "contract IAsset[]", + "name": "assets", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + }, + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IVault.FundManagement", + "name": "funds", + "type": "tuple" + }, + { + "internalType": "int256[]", + "name": "limits", + "type": "int256[]" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "key", + "type": "uint256" + } + ], + "internalType": "struct VaultActions.OutputReference[]", + "name": "outputReferences", + "type": "tuple[]" + } + ], + "name": "batchSwap", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "enum VaultActions.PoolKind", + "name": "kind", + "type": "uint8" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + }, + { + "components": [ + { + "internalType": "contract IAsset[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "minAmountsOut", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IVault.ExitPoolRequest", + "name": "request", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "key", + "type": "uint256" + } + ], + "internalType": "struct VaultActions.OutputReference[]", + "name": "outputReferences", + "type": "tuple[]" + } + ], + "name": "exitPool", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IStakingLiquidityGauge[]", + "name": "gauges", + "type": "address[]" + } + ], + "name": "gaugeClaimRewards", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IStakingLiquidityGauge", + "name": "gauge", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "gaugeDeposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "gauges", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "gaugeMint", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "approval", + "type": "bool" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "gaugeSetMinterApproval", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IStakingLiquidityGauge", + "name": "gauge", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "gaugeWithdraw", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "getEntrypoint", + "outputs": [ + { + "internalType": "contract IBalancerRelayer", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVault", + "outputs": [ + { + "internalType": "contract IVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "enum VaultActions.PoolKind", + "name": "kind", + "type": "uint8" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "components": [ + { + "internalType": "contract IAsset[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "maxAmountsIn", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IVault.JoinPoolRequest", + "name": "request", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "joinPool", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "enum IVault.UserBalanceOpKind", + "name": "kind", + "type": "uint8" + }, + { + "internalType": "contract IAsset", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + } + ], + "internalType": "struct IVault.UserBalanceOp[]", + "name": "ops", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "manageUserBalance", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "ref", + "type": "uint256" + } + ], + "name": "peekChainedReferenceValue", + "outputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relayer", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "authorisation", + "type": "bytes" + } + ], + "name": "setRelayerApproval", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "stakeETH", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "stakeETHAndWrap", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "poolId", + "type": "bytes32" + }, + { + "internalType": "enum IVault.SwapKind", + "name": "kind", + "type": "uint8" + }, + { + "internalType": "contract IAsset", + "name": "assetIn", + "type": "address" + }, + { + "internalType": "contract IAsset", + "name": "assetOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "internalType": "struct IVault.SingleSwap", + "name": "singleSwap", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "bool", + "name": "fromInternalBalance", + "type": "bool" + }, + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + }, + { + "internalType": "bool", + "name": "toInternalBalance", + "type": "bool" + } + ], + "internalType": "struct IVault.FundManagement", + "name": "funds", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "swap", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IStaticATokenLM", + "name": "staticToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "toUnderlying", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "unwrapAaveStaticToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC4626", + "name": "wrappedToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "unwrapERC4626", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IReaperTokenVault", + "name": "vaultToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "unwrapReaperVaultToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IUnbuttonToken", + "name": "wrapperToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "unwrapUnbuttonToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "unwrapWstETH", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20Permit", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "vaultPermit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20PermitDAI", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "holder", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiry", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "vaultPermitDAI", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IStaticATokenLM", + "name": "staticToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "fromUnderlying", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "wrapAaveDynamicToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC4626", + "name": "wrappedToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "wrapERC4626", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IReaperTokenVault", + "name": "vaultToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "wrapReaperVaultToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "wrapStETH", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IUnbuttonToken", + "name": "wrapperToken", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "uAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "outputReference", + "type": "uint256" + } + ], + "name": "wrapUnbuttonToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } +] \ No newline at end of file diff --git a/pkg/deployments/tasks/20220916-batch-relayer-v4/build-info/BatchRelayerLibrary.json b/pkg/deployments/tasks/20220916-batch-relayer-v4/build-info/BatchRelayerLibrary.json new file mode 100644 index 0000000000..f880d8221e --- /dev/null +++ b/pkg/deployments/tasks/20220916-batch-relayer-v4/build-info/BatchRelayerLibrary.json @@ -0,0 +1 @@ +{"id":"7155dd8ec3492c9d661d7f057d2be809","_format":"hh-sol-build-info-1","solcVersion":"0.7.1","solcLongVersion":"0.7.1+commit.f4a555be","input":{"language":"Solidity","sources":{"contracts/BALTokenHolder.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\n/**\n * @dev This contract simply holds the BAL token and delegates to Balancer Governance the permission to withdraw it. It\n * is intended to serve as the recipient of automated BAL minting via the liquidity mining gauges, allowing for the\n * final recipient of the funds to be configurable without having to alter the gauges themselves.\n *\n * There is also a separate auxiliary function to sweep any non-BAL tokens sent here by mistake.\n */\ncontract BALTokenHolder is IBALTokenHolder, SingletonAuthentication {\n using SafeERC20 for IERC20;\n\n IBalancerToken private immutable _balancerToken;\n\n string private _name;\n\n constructor(\n IBalancerToken balancerToken,\n IVault vault,\n string memory name\n ) SingletonAuthentication(vault) {\n // BALTokenHolder is often deployed from a factory for convenience, but it uses its own address instead of\n // the factory's as a disambiguator to make sure the action IDs of all instances are unique, reducing likelihood\n // of errors.\n\n _balancerToken = balancerToken;\n _name = name;\n }\n\n function getBalancerToken() external view returns (IBalancerToken) {\n return _balancerToken;\n }\n\n function getName() external view override returns (string memory) {\n return _name;\n }\n\n function withdrawFunds(address recipient, uint256 amount) external override authenticate {\n IERC20(_balancerToken).safeTransfer(recipient, amount);\n }\n\n function sweepTokens(\n IERC20 token,\n address recipient,\n uint256 amount\n ) external override authenticate {\n require(token != _balancerToken, \"Cannot sweep BAL\");\n IERC20(token).safeTransfer(recipient, amount);\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface IBalancerToken is IERC20 {\n function mint(address to, uint256 amount) external;\n\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\n\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\n\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n function grantRole(bytes32 role, address account) external;\n\n function revokeRole(bytes32 role, address account) external;\n\n // solhint-disable-next-line func-name-mixedcase\n function DEFAULT_ADMIN_ROLE() external view returns (bytes32);\n\n // solhint-disable-next-line func-name-mixedcase\n function MINTER_ROLE() external view returns (bytes32);\n\n // solhint-disable-next-line func-name-mixedcase\n function SNAPSHOT_ROLE() external view returns (bytes32);\n\n function snapshot() external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../solidity-utils/helpers/IAuthentication.sol\";\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface IBALTokenHolder is IAuthentication {\n function getName() external view returns (string memory);\n\n function withdrawFunds(address recipient, uint256 amount) external;\n\n function sweepTokens(\n IERC20 token,\n address recipient,\n uint256 amount\n ) external;\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"./Authentication.sol\";\n\nabstract contract SingletonAuthentication is Authentication {\n IVault private immutable _vault;\n\n // Use the contract's own address to disambiguate action identifiers\n constructor(IVault vault) Authentication(bytes32(uint256(address(this)))) {\n _vault = vault;\n }\n\n /**\n * @notice Returns the Balancer Vault\n */\n function getVault() public view returns (IVault) {\n return _vault;\n }\n\n /**\n * @notice Returns the Authorizer\n */\n function getAuthorizer() public view returns (IAuthorizer) {\n return getVault().getAuthorizer();\n }\n\n function _canPerform(bytes32 actionId, address account) internal view override returns (bool) {\n return getAuthorizer().canPerform(actionId, account, address(this));\n }\n\n function _canPerform(\n bytes32 actionId,\n address account,\n address where\n ) internal view returns (bool) {\n return getAuthorizer().canPerform(actionId, account, where);\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\nimport \"../solidity-utils/helpers/IAuthentication.sol\";\nimport \"../solidity-utils/helpers/ISignaturesValidator.sol\";\nimport \"../solidity-utils/helpers/ITemporarilyPausable.sol\";\nimport \"../solidity-utils/misc/IWETH.sol\";\n\nimport \"./IAsset.sol\";\nimport \"./IAuthorizer.sol\";\nimport \"./IFlashLoanRecipient.sol\";\nimport \"./IProtocolFeesCollector.sol\";\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Full external interface for the Vault core contract - no external or public methods exist in the contract that\n * don't override one of these declarations.\n */\ninterface IVault is ISignaturesValidator, ITemporarilyPausable, IAuthentication {\n // Generalities about the Vault:\n //\n // - Whenever documentation refers to 'tokens', it strictly refers to ERC20-compliant token contracts. Tokens are\n // transferred out of the Vault by calling the `IERC20.transfer` function, and transferred in by calling\n // `IERC20.transferFrom`. In these cases, the sender must have previously allowed the Vault to use their tokens by\n // calling `IERC20.approve`. The only deviation from the ERC20 standard that is supported is functions not returning\n // a boolean value: in these scenarios, a non-reverting call is assumed to be successful.\n //\n // - All non-view functions in the Vault are non-reentrant: calling them while another one is mid-execution (e.g.\n // while execution control is transferred to a token contract during a swap) will result in a revert. View\n // functions can be called in a re-reentrant way, but doing so might cause them to return inconsistent results.\n // Contracts calling view functions in the Vault must make sure the Vault has not already been entered.\n //\n // - View functions revert if referring to either unregistered Pools, or unregistered tokens for registered Pools.\n\n // Authorizer\n //\n // Some system actions are permissioned, like setting and collecting protocol fees. This permissioning system exists\n // outside of the Vault in the Authorizer contract: the Vault simply calls the Authorizer to check if the caller\n // can perform a given action.\n\n /**\n * @dev Returns the Vault's Authorizer.\n */\n function getAuthorizer() external view returns (IAuthorizer);\n\n /**\n * @dev Sets a new Authorizer for the Vault. The caller must be allowed by the current Authorizer to do this.\n *\n * Emits an `AuthorizerChanged` event.\n */\n function setAuthorizer(IAuthorizer newAuthorizer) external;\n\n /**\n * @dev Emitted when a new authorizer is set by `setAuthorizer`.\n */\n event AuthorizerChanged(IAuthorizer indexed newAuthorizer);\n\n // Relayers\n //\n // Additionally, it is possible for an account to perform certain actions on behalf of another one, using their\n // Vault ERC20 allowance and Internal Balance. These accounts are said to be 'relayers' for these Vault functions,\n // and are expected to be smart contracts with sound authentication mechanisms. For an account to be able to wield\n // this power, two things must occur:\n // - The Authorizer must grant the account the permission to be a relayer for the relevant Vault function. This\n // means that Balancer governance must approve each individual contract to act as a relayer for the intended\n // functions.\n // - Each user must approve the relayer to act on their behalf.\n // This double protection means users cannot be tricked into approving malicious relayers (because they will not\n // have been allowed by the Authorizer via governance), nor can malicious relayers approved by a compromised\n // Authorizer or governance drain user funds, since they would also need to be approved by each individual user.\n\n /**\n * @dev Returns true if `user` has approved `relayer` to act as a relayer for them.\n */\n function hasApprovedRelayer(address user, address relayer) external view returns (bool);\n\n /**\n * @dev Allows `relayer` to act as a relayer for `sender` if `approved` is true, and disallows it otherwise.\n *\n * Emits a `RelayerApprovalChanged` event.\n */\n function setRelayerApproval(\n address sender,\n address relayer,\n bool approved\n ) external;\n\n /**\n * @dev Emitted every time a relayer is approved or disapproved by `setRelayerApproval`.\n */\n event RelayerApprovalChanged(address indexed relayer, address indexed sender, bool approved);\n\n // Internal Balance\n //\n // Users can deposit tokens into the Vault, where they are allocated to their Internal Balance, and later\n // transferred or withdrawn. It can also be used as a source of tokens when joining Pools, as a destination\n // when exiting them, and as either when performing swaps. This usage of Internal Balance results in greatly reduced\n // gas costs when compared to relying on plain ERC20 transfers, leading to large savings for frequent users.\n //\n // Internal Balance management features batching, which means a single contract call can be used to perform multiple\n // operations of different kinds, with different senders and recipients, at once.\n\n /**\n * @dev Returns `user`'s Internal Balance for a set of tokens.\n */\n function getInternalBalance(address user, IERC20[] memory tokens) external view returns (uint256[] memory);\n\n /**\n * @dev Performs a set of user balance operations, which involve Internal Balance (deposit, withdraw or transfer)\n * and plain ERC20 transfers using the Vault's allowance. This last feature is particularly useful for relayers, as\n * it lets integrators reuse a user's Vault allowance.\n *\n * For each operation, if the caller is not `sender`, it must be an authorized relayer for them.\n */\n function manageUserBalance(UserBalanceOp[] memory ops) external payable;\n\n /**\n * @dev Data for `manageUserBalance` operations, which include the possibility for ETH to be sent and received\n without manual WETH wrapping or unwrapping.\n */\n struct UserBalanceOp {\n UserBalanceOpKind kind;\n IAsset asset;\n uint256 amount;\n address sender;\n address payable recipient;\n }\n\n // There are four possible operations in `manageUserBalance`:\n //\n // - DEPOSIT_INTERNAL\n // Increases the Internal Balance of the `recipient` account by transferring tokens from the corresponding\n // `sender`. The sender must have allowed the Vault to use their tokens via `IERC20.approve()`.\n //\n // ETH can be used by passing the ETH sentinel value as the asset and forwarding ETH in the call: it will be wrapped\n // and deposited as WETH. Any ETH amount remaining will be sent back to the caller (not the sender, which is\n // relevant for relayers).\n //\n // Emits an `InternalBalanceChanged` event.\n //\n //\n // - WITHDRAW_INTERNAL\n // Decreases the Internal Balance of the `sender` account by transferring tokens to the `recipient`.\n //\n // ETH can be used by passing the ETH sentinel value as the asset. This will deduct WETH instead, unwrap it and send\n // it to the recipient as ETH.\n //\n // Emits an `InternalBalanceChanged` event.\n //\n //\n // - TRANSFER_INTERNAL\n // Transfers tokens from the Internal Balance of the `sender` account to the Internal Balance of `recipient`.\n //\n // Reverts if the ETH sentinel value is passed.\n //\n // Emits an `InternalBalanceChanged` event.\n //\n //\n // - TRANSFER_EXTERNAL\n // Transfers tokens from `sender` to `recipient`, using the Vault's ERC20 allowance. This is typically used by\n // relayers, as it lets them reuse a user's Vault allowance.\n //\n // Reverts if the ETH sentinel value is passed.\n //\n // Emits an `ExternalBalanceTransfer` event.\n\n enum UserBalanceOpKind { DEPOSIT_INTERNAL, WITHDRAW_INTERNAL, TRANSFER_INTERNAL, TRANSFER_EXTERNAL }\n\n /**\n * @dev Emitted when a user's Internal Balance changes, either from calls to `manageUserBalance`, or through\n * interacting with Pools using Internal Balance.\n *\n * Because Internal Balance works exclusively with ERC20 tokens, ETH deposits and withdrawals will use the WETH\n * address.\n */\n event InternalBalanceChanged(address indexed user, IERC20 indexed token, int256 delta);\n\n /**\n * @dev Emitted when a user's Vault ERC20 allowance is used by the Vault to transfer tokens to an external account.\n */\n event ExternalBalanceTransfer(IERC20 indexed token, address indexed sender, address recipient, uint256 amount);\n\n // Pools\n //\n // There are three specialization settings for Pools, which allow for cheaper swaps at the cost of reduced\n // functionality:\n //\n // - General: no specialization, suited for all Pools. IGeneralPool is used for swap request callbacks, passing the\n // balance of all tokens in the Pool. These Pools have the largest swap costs (because of the extra storage reads),\n // which increase with the number of registered tokens.\n //\n // - Minimal Swap Info: IMinimalSwapInfoPool is used instead of IGeneralPool, which saves gas by only passing the\n // balance of the two tokens involved in the swap. This is suitable for some pricing algorithms, like the weighted\n // constant product one popularized by Balancer V1. Swap costs are smaller compared to general Pools, and are\n // independent of the number of registered tokens.\n //\n // - Two Token: only allows two tokens to be registered. This achieves the lowest possible swap gas cost. Like\n // minimal swap info Pools, these are called via IMinimalSwapInfoPool.\n\n enum PoolSpecialization { GENERAL, MINIMAL_SWAP_INFO, TWO_TOKEN }\n\n /**\n * @dev Registers the caller account as a Pool with a given specialization setting. Returns the Pool's ID, which\n * is used in all Pool-related functions. Pools cannot be deregistered, nor can the Pool's specialization be\n * changed.\n *\n * The caller is expected to be a smart contract that implements either `IGeneralPool` or `IMinimalSwapInfoPool`,\n * depending on the chosen specialization setting. This contract is known as the Pool's contract.\n *\n * Note that the same contract may register itself as multiple Pools with unique Pool IDs, or in other words,\n * multiple Pools may share the same contract.\n *\n * Emits a `PoolRegistered` event.\n */\n function registerPool(PoolSpecialization specialization) external returns (bytes32);\n\n /**\n * @dev Emitted when a Pool is registered by calling `registerPool`.\n */\n event PoolRegistered(bytes32 indexed poolId, address indexed poolAddress, PoolSpecialization specialization);\n\n /**\n * @dev Returns a Pool's contract address and specialization setting.\n */\n function getPool(bytes32 poolId) external view returns (address, PoolSpecialization);\n\n /**\n * @dev Registers `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n *\n * Pools can only interact with tokens they have registered. Users join a Pool by transferring registered tokens,\n * exit by receiving registered tokens, and can only swap registered tokens.\n *\n * Each token can only be registered once. For Pools with the Two Token specialization, `tokens` must have a length\n * of two, that is, both tokens must be registered in the same `registerTokens` call, and they must be sorted in\n * ascending order.\n *\n * The `tokens` and `assetManagers` arrays must have the same length, and each entry in these indicates the Asset\n * Manager for the corresponding token. Asset Managers can manage a Pool's tokens via `managePoolBalance`,\n * depositing and withdrawing them directly, and can even set their balance to arbitrary amounts. They are therefore\n * expected to be highly secured smart contracts with sound design principles, and the decision to register an\n * Asset Manager should not be made lightly.\n *\n * Pools can choose not to assign an Asset Manager to a given token by passing in the zero address. Once an Asset\n * Manager is set, it cannot be changed except by deregistering the associated token and registering again with a\n * different Asset Manager.\n *\n * Emits a `TokensRegistered` event.\n */\n function registerTokens(\n bytes32 poolId,\n IERC20[] memory tokens,\n address[] memory assetManagers\n ) external;\n\n /**\n * @dev Emitted when a Pool registers tokens by calling `registerTokens`.\n */\n event TokensRegistered(bytes32 indexed poolId, IERC20[] tokens, address[] assetManagers);\n\n /**\n * @dev Deregisters `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n *\n * Only registered tokens (via `registerTokens`) can be deregistered. Additionally, they must have zero total\n * balance. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens\n * must be deregistered in the same `deregisterTokens` call.\n *\n * A deregistered token can be re-registered later on, possibly with a different Asset Manager.\n *\n * Emits a `TokensDeregistered` event.\n */\n function deregisterTokens(bytes32 poolId, IERC20[] memory tokens) external;\n\n /**\n * @dev Emitted when a Pool deregisters tokens by calling `deregisterTokens`.\n */\n event TokensDeregistered(bytes32 indexed poolId, IERC20[] tokens);\n\n /**\n * @dev Returns detailed information for a Pool's registered token.\n *\n * `cash` is the number of tokens the Vault currently holds for the Pool. `managed` is the number of tokens\n * withdrawn and held outside the Vault by the Pool's token Asset Manager. The Pool's total balance for `token`\n * equals the sum of `cash` and `managed`.\n *\n * Internally, `cash` and `managed` are stored using 112 bits. No action can ever cause a Pool's token `cash`,\n * `managed` or `total` balance to be greater than 2^112 - 1.\n *\n * `lastChangeBlock` is the number of the block in which `token`'s total balance was last modified (via either a\n * join, exit, swap, or Asset Manager update). This value is useful to avoid so-called 'sandwich attacks', for\n * example when developing price oracles. A change of zero (e.g. caused by a swap with amount zero) is considered a\n * change for this purpose, and will update `lastChangeBlock`.\n *\n * `assetManager` is the Pool's token Asset Manager.\n */\n function getPoolTokenInfo(bytes32 poolId, IERC20 token)\n external\n view\n returns (\n uint256 cash,\n uint256 managed,\n uint256 lastChangeBlock,\n address assetManager\n );\n\n /**\n * @dev Returns a Pool's registered tokens, the total balance for each, and the latest block when *any* of\n * the tokens' `balances` changed.\n *\n * The order of the `tokens` array is the same order that will be used in `joinPool`, `exitPool`, as well as in all\n * Pool hooks (where applicable). Calls to `registerTokens` and `deregisterTokens` may change this order.\n *\n * If a Pool only registers tokens once, and these are sorted in ascending order, they will be stored in the same\n * order as passed to `registerTokens`.\n *\n * Total balances include both tokens held by the Vault and those withdrawn by the Pool's Asset Managers. These are\n * the amounts used by joins, exits and swaps. For a detailed breakdown of token balances, use `getPoolTokenInfo`\n * instead.\n */\n function getPoolTokens(bytes32 poolId)\n external\n view\n returns (\n IERC20[] memory tokens,\n uint256[] memory balances,\n uint256 lastChangeBlock\n );\n\n /**\n * @dev Called by users to join a Pool, which transfers tokens from `sender` into the Pool's balance. This will\n * trigger custom Pool behavior, which will typically grant something in return to `recipient` - often tokenized\n * Pool shares.\n *\n * If the caller is not `sender`, it must be an authorized relayer for them.\n *\n * The `assets` and `maxAmountsIn` arrays must have the same length, and each entry indicates the maximum amount\n * to send for each asset. The amounts to send are decided by the Pool and not the Vault: it just enforces\n * these maximums.\n *\n * If joining a Pool that holds WETH, it is possible to send ETH directly: the Vault will do the wrapping. To enable\n * this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the\n * WETH address. Note that it is not possible to combine ETH and WETH in the same join. Any excess ETH will be sent\n * back to the caller (not the sender, which is important for relayers).\n *\n * `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n * interacting with Pools that register and deregister tokens frequently. If sending ETH however, the array must be\n * sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final\n * `assets` array might not be sorted. Pools with no registered tokens cannot be joined.\n *\n * If `fromInternalBalance` is true, the caller's Internal Balance will be preferred: ERC20 transfers will only\n * be made for the difference between the requested amount and Internal Balance (if any). Note that ETH cannot be\n * withdrawn from Internal Balance: attempting to do so will trigger a revert.\n *\n * This causes the Vault to call the `IBasePool.onJoinPool` hook on the Pool's contract, where Pools implement\n * their own custom logic. This typically requires additional information from the user (such as the expected number\n * of Pool shares). This can be encoded in the `userData` argument, which is ignored by the Vault and passed\n * directly to the Pool's contract, as is `recipient`.\n *\n * Emits a `PoolBalanceChanged` event.\n */\n function joinPool(\n bytes32 poolId,\n address sender,\n address recipient,\n JoinPoolRequest memory request\n ) external payable;\n\n struct JoinPoolRequest {\n IAsset[] assets;\n uint256[] maxAmountsIn;\n bytes userData;\n bool fromInternalBalance;\n }\n\n /**\n * @dev Called by users to exit a Pool, which transfers tokens from the Pool's balance to `recipient`. This will\n * trigger custom Pool behavior, which will typically ask for something in return from `sender` - often tokenized\n * Pool shares. The amount of tokens that can be withdrawn is limited by the Pool's `cash` balance (see\n * `getPoolTokenInfo`).\n *\n * If the caller is not `sender`, it must be an authorized relayer for them.\n *\n * The `tokens` and `minAmountsOut` arrays must have the same length, and each entry in these indicates the minimum\n * token amount to receive for each token contract. The amounts to send are decided by the Pool and not the Vault:\n * it just enforces these minimums.\n *\n * If exiting a Pool that holds WETH, it is possible to receive ETH directly: the Vault will do the unwrapping. To\n * enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead\n * of the WETH address. Note that it is not possible to combine ETH and WETH in the same exit.\n *\n * `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n * interacting with Pools that register and deregister tokens frequently. If receiving ETH however, the array must\n * be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the\n * final `assets` array might not be sorted. Pools with no registered tokens cannot be exited.\n *\n * If `toInternalBalance` is true, the tokens will be deposited to `recipient`'s Internal Balance. Otherwise,\n * an ERC20 transfer will be performed. Note that ETH cannot be deposited to Internal Balance: attempting to\n * do so will trigger a revert.\n *\n * `minAmountsOut` is the minimum amount of tokens the user expects to get out of the Pool, for each token in the\n * `tokens` array. This array must match the Pool's registered tokens.\n *\n * This causes the Vault to call the `IBasePool.onExitPool` hook on the Pool's contract, where Pools implement\n * their own custom logic. This typically requires additional information from the user (such as the expected number\n * of Pool shares to return). This can be encoded in the `userData` argument, which is ignored by the Vault and\n * passed directly to the Pool's contract.\n *\n * Emits a `PoolBalanceChanged` event.\n */\n function exitPool(\n bytes32 poolId,\n address sender,\n address payable recipient,\n ExitPoolRequest memory request\n ) external;\n\n struct ExitPoolRequest {\n IAsset[] assets;\n uint256[] minAmountsOut;\n bytes userData;\n bool toInternalBalance;\n }\n\n /**\n * @dev Emitted when a user joins or exits a Pool by calling `joinPool` or `exitPool`, respectively.\n */\n event PoolBalanceChanged(\n bytes32 indexed poolId,\n address indexed liquidityProvider,\n IERC20[] tokens,\n int256[] deltas,\n uint256[] protocolFeeAmounts\n );\n\n enum PoolBalanceChangeKind { JOIN, EXIT }\n\n // Swaps\n //\n // Users can swap tokens with Pools by calling the `swap` and `batchSwap` functions. To do this,\n // they need not trust Pool contracts in any way: all security checks are made by the Vault. They must however be\n // aware of the Pools' pricing algorithms in order to estimate the prices Pools will quote.\n //\n // The `swap` function executes a single swap, while `batchSwap` can perform multiple swaps in sequence.\n // In each individual swap, tokens of one kind are sent from the sender to the Pool (this is the 'token in'),\n // and tokens of another kind are sent from the Pool to the recipient in exchange (this is the 'token out').\n // More complex swaps, such as one token in to multiple tokens out can be achieved by batching together\n // individual swaps.\n //\n // There are two swap kinds:\n // - 'given in' swaps, where the amount of tokens in (sent to the Pool) is known, and the Pool determines (via the\n // `onSwap` hook) the amount of tokens out (to send to the recipient).\n // - 'given out' swaps, where the amount of tokens out (received from the Pool) is known, and the Pool determines\n // (via the `onSwap` hook) the amount of tokens in (to receive from the sender).\n //\n // Additionally, it is possible to chain swaps using a placeholder input amount, which the Vault replaces with\n // the calculated output of the previous swap. If the previous swap was 'given in', this will be the calculated\n // tokenOut amount. If the previous swap was 'given out', it will use the calculated tokenIn amount. These extended\n // swaps are known as 'multihop' swaps, since they 'hop' through a number of intermediate tokens before arriving at\n // the final intended token.\n //\n // In all cases, tokens are only transferred in and out of the Vault (or withdrawn from and deposited into Internal\n // Balance) after all individual swaps have been completed, and the net token balance change computed. This makes\n // certain swap patterns, such as multihops, or swaps that interact with the same token pair in multiple Pools, cost\n // much less gas than they would otherwise.\n //\n // It also means that under certain conditions it is possible to perform arbitrage by swapping with multiple\n // Pools in a way that results in net token movement out of the Vault (profit), with no tokens being sent in (only\n // updating the Pool's internal accounting).\n //\n // To protect users from front-running or the market changing rapidly, they supply a list of 'limits' for each token\n // involved in the swap, where either the maximum number of tokens to send (by passing a positive value) or the\n // minimum amount of tokens to receive (by passing a negative value) is specified.\n //\n // Additionally, a 'deadline' timestamp can also be provided, forcing the swap to fail if it occurs after\n // this point in time (e.g. if the transaction failed to be included in a block promptly).\n //\n // If interacting with Pools that hold WETH, it is possible to both send and receive ETH directly: the Vault will do\n // the wrapping and unwrapping. To enable this mechanism, the IAsset sentinel value (the zero address) must be\n // passed in the `assets` array instead of the WETH address. Note that it is possible to combine ETH and WETH in the\n // same swap. Any excess ETH will be sent back to the caller (not the sender, which is relevant for relayers).\n //\n // Finally, Internal Balance can be used when either sending or receiving tokens.\n\n enum SwapKind { GIVEN_IN, GIVEN_OUT }\n\n /**\n * @dev Performs a swap with a single Pool.\n *\n * If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens\n * taken from the Pool, which must be greater than or equal to `limit`.\n *\n * If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens\n * sent to the Pool, which must be less than or equal to `limit`.\n *\n * Internal Balance usage and the recipient are determined by the `funds` struct.\n *\n * Emits a `Swap` event.\n */\n function swap(\n SingleSwap memory singleSwap,\n FundManagement memory funds,\n uint256 limit,\n uint256 deadline\n ) external payable returns (uint256);\n\n /**\n * @dev Data for a single swap executed by `swap`. `amount` is either `amountIn` or `amountOut` depending on\n * the `kind` value.\n *\n * `assetIn` and `assetOut` are either token addresses, or the IAsset sentinel value for ETH (the zero address).\n * Note that Pools never interact with ETH directly: it will be wrapped to or unwrapped from WETH by the Vault.\n *\n * The `userData` field is ignored by the Vault, but forwarded to the Pool in the `onSwap` hook, and may be\n * used to extend swap behavior.\n */\n struct SingleSwap {\n bytes32 poolId;\n SwapKind kind;\n IAsset assetIn;\n IAsset assetOut;\n uint256 amount;\n bytes userData;\n }\n\n /**\n * @dev Performs a series of swaps with one or multiple Pools. In each individual swap, the caller determines either\n * the amount of tokens sent to or received from the Pool, depending on the `kind` value.\n *\n * Returns an array with the net Vault asset balance deltas. Positive amounts represent tokens (or ETH) sent to the\n * Vault, and negative amounts represent tokens (or ETH) sent by the Vault. Each delta corresponds to the asset at\n * the same index in the `assets` array.\n *\n * Swaps are executed sequentially, in the order specified by the `swaps` array. Each array element describes a\n * Pool, the token to be sent to this Pool, the token to receive from it, and an amount that is either `amountIn` or\n * `amountOut` depending on the swap kind.\n *\n * Multihop swaps can be executed by passing an `amount` value of zero for a swap. This will cause the amount in/out\n * of the previous swap to be used as the amount in for the current one. In a 'given in' swap, 'tokenIn' must equal\n * the previous swap's `tokenOut`. For a 'given out' swap, `tokenOut` must equal the previous swap's `tokenIn`.\n *\n * The `assets` array contains the addresses of all assets involved in the swaps. These are either token addresses,\n * or the IAsset sentinel value for ETH (the zero address). Each entry in the `swaps` array specifies tokens in and\n * out by referencing an index in `assets`. Note that Pools never interact with ETH directly: it will be wrapped to\n * or unwrapped from WETH by the Vault.\n *\n * Internal Balance usage, sender, and recipient are determined by the `funds` struct. The `limits` array specifies\n * the minimum or maximum amount of each token the vault is allowed to transfer.\n *\n * `batchSwap` can be used to make a single swap, like `swap` does, but doing so requires more gas than the\n * equivalent `swap` call.\n *\n * Emits `Swap` events.\n */\n function batchSwap(\n SwapKind kind,\n BatchSwapStep[] memory swaps,\n IAsset[] memory assets,\n FundManagement memory funds,\n int256[] memory limits,\n uint256 deadline\n ) external payable returns (int256[] memory);\n\n /**\n * @dev Data for each individual swap executed by `batchSwap`. The asset in and out fields are indexes into the\n * `assets` array passed to that function, and ETH assets are converted to WETH.\n *\n * If `amount` is zero, the multihop mechanism is used to determine the actual amount based on the amount in/out\n * from the previous swap, depending on the swap kind.\n *\n * The `userData` field is ignored by the Vault, but forwarded to the Pool in the `onSwap` hook, and may be\n * used to extend swap behavior.\n */\n struct BatchSwapStep {\n bytes32 poolId;\n uint256 assetInIndex;\n uint256 assetOutIndex;\n uint256 amount;\n bytes userData;\n }\n\n /**\n * @dev Emitted for each individual swap performed by `swap` or `batchSwap`.\n */\n event Swap(\n bytes32 indexed poolId,\n IERC20 indexed tokenIn,\n IERC20 indexed tokenOut,\n uint256 amountIn,\n uint256 amountOut\n );\n\n /**\n * @dev All tokens in a swap are either sent from the `sender` account to the Vault, or from the Vault to the\n * `recipient` account.\n *\n * If the caller is not `sender`, it must be an authorized relayer for them.\n *\n * If `fromInternalBalance` is true, the `sender`'s Internal Balance will be preferred, performing an ERC20\n * transfer for the difference between the requested amount and the User's Internal Balance (if any). The `sender`\n * must have allowed the Vault to use their tokens via `IERC20.approve()`. This matches the behavior of\n * `joinPool`.\n *\n * If `toInternalBalance` is true, tokens will be deposited to `recipient`'s internal balance instead of\n * transferred. This matches the behavior of `exitPool`.\n *\n * Note that ETH cannot be deposited to or withdrawn from Internal Balance: attempting to do so will trigger a\n * revert.\n */\n struct FundManagement {\n address sender;\n bool fromInternalBalance;\n address payable recipient;\n bool toInternalBalance;\n }\n\n /**\n * @dev Simulates a call to `batchSwap`, returning an array of Vault asset deltas. Calls to `swap` cannot be\n * simulated directly, but an equivalent `batchSwap` call can and will yield the exact same result.\n *\n * Each element in the array corresponds to the asset at the same index, and indicates the number of tokens (or ETH)\n * the Vault would take from the sender (if positive) or send to the recipient (if negative). The arguments it\n * receives are the same that an equivalent `batchSwap` call would receive.\n *\n * Unlike `batchSwap`, this function performs no checks on the sender or recipient field in the `funds` struct.\n * This makes it suitable to be called by off-chain applications via eth_call without needing to hold tokens,\n * approve them for the Vault, or even know a user's address.\n *\n * Note that this function is not 'view' (due to implementation details): the client code must explicitly execute\n * eth_call instead of eth_sendTransaction.\n */\n function queryBatchSwap(\n SwapKind kind,\n BatchSwapStep[] memory swaps,\n IAsset[] memory assets,\n FundManagement memory funds\n ) external returns (int256[] memory assetDeltas);\n\n // Flash Loans\n\n /**\n * @dev Performs a 'flash loan', sending tokens to `recipient`, executing the `receiveFlashLoan` hook on it,\n * and then reverting unless the tokens plus a proportional protocol fee have been returned.\n *\n * The `tokens` and `amounts` arrays must have the same length, and each entry in these indicates the loan amount\n * for each token contract. `tokens` must be sorted in ascending order.\n *\n * The 'userData' field is ignored by the Vault, and forwarded as-is to `recipient` as part of the\n * `receiveFlashLoan` call.\n *\n * Emits `FlashLoan` events.\n */\n function flashLoan(\n IFlashLoanRecipient recipient,\n IERC20[] memory tokens,\n uint256[] memory amounts,\n bytes memory userData\n ) external;\n\n /**\n * @dev Emitted for each individual flash loan performed by `flashLoan`.\n */\n event FlashLoan(IFlashLoanRecipient indexed recipient, IERC20 indexed token, uint256 amount, uint256 feeAmount);\n\n // Asset Management\n //\n // Each token registered for a Pool can be assigned an Asset Manager, which is able to freely withdraw the Pool's\n // tokens from the Vault, deposit them, or assign arbitrary values to its `managed` balance (see\n // `getPoolTokenInfo`). This makes them extremely powerful and dangerous. Even if an Asset Manager only directly\n // controls one of the tokens in a Pool, a malicious manager could set that token's balance to manipulate the\n // prices of the other tokens, and then drain the Pool with swaps. The risk of using Asset Managers is therefore\n // not constrained to the tokens they are managing, but extends to the entire Pool's holdings.\n //\n // However, a properly designed Asset Manager smart contract can be safely used for the Pool's benefit,\n // for example by lending unused tokens out for interest, or using them to participate in voting protocols.\n //\n // This concept is unrelated to the IAsset interface.\n\n /**\n * @dev Performs a set of Pool balance operations, which may be either withdrawals, deposits or updates.\n *\n * Pool Balance management features batching, which means a single contract call can be used to perform multiple\n * operations of different kinds, with different Pools and tokens, at once.\n *\n * For each operation, the caller must be registered as the Asset Manager for `token` in `poolId`.\n */\n function managePoolBalance(PoolBalanceOp[] memory ops) external;\n\n struct PoolBalanceOp {\n PoolBalanceOpKind kind;\n bytes32 poolId;\n IERC20 token;\n uint256 amount;\n }\n\n /**\n * Withdrawals decrease the Pool's cash, but increase its managed balance, leaving the total balance unchanged.\n *\n * Deposits increase the Pool's cash, but decrease its managed balance, leaving the total balance unchanged.\n *\n * Updates don't affect the Pool's cash balance, but because the managed balance changes, it does alter the total.\n * The external amount can be either increased or decreased by this call (i.e., reporting a gain or a loss).\n */\n enum PoolBalanceOpKind { WITHDRAW, DEPOSIT, UPDATE }\n\n /**\n * @dev Emitted when a Pool's token Asset Manager alters its balance via `managePoolBalance`.\n */\n event PoolBalanceManaged(\n bytes32 indexed poolId,\n address indexed assetManager,\n IERC20 indexed token,\n int256 cashDelta,\n int256 managedDelta\n );\n\n // Protocol Fees\n //\n // Some operations cause the Vault to collect tokens in the form of protocol fees, which can then be withdrawn by\n // permissioned accounts.\n //\n // There are two kinds of protocol fees:\n //\n // - flash loan fees: charged on all flash loans, as a percentage of the amounts lent.\n //\n // - swap fees: a percentage of the fees charged by Pools when performing swaps. For a number of reasons, including\n // swap gas costs and interface simplicity, protocol swap fees are not charged on each individual swap. Rather,\n // Pools are expected to keep track of how much they have charged in swap fees, and pay any outstanding debts to the\n // Vault when they are joined or exited. This prevents users from joining a Pool with unpaid debt, as well as\n // exiting a Pool in debt without first paying their share.\n\n /**\n * @dev Returns the current protocol fee module.\n */\n function getProtocolFeesCollector() external view returns (IProtocolFeesCollector);\n\n /**\n * @dev Safety mechanism to pause most Vault operations in the event of an emergency - typically detection of an\n * error in some part of the system.\n *\n * The Vault can only be paused during an initial time period, after which pausing is forever disabled.\n *\n * While the contract is paused, the following features are disabled:\n * - depositing and transferring internal balance\n * - transferring external balance (using the Vault's allowance)\n * - swaps\n * - joining Pools\n * - Asset Manager interactions\n *\n * Internal Balance can still be withdrawn, and Pools exited.\n */\n function setPaused(bool paused) external;\n\n /**\n * @dev Returns the Vault's WETH instance.\n */\n function WETH() external view returns (IWETH);\n // solhint-disable-previous-line func-name-mixedcase\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the ReentrancyGuard library from OpenZeppelin Contracts, altered to reduce gas costs.\n// The `safeTransfer` and `safeTransferFrom` functions assume that `token` is a contract (an account with code), and\n// work differently from the OpenZeppelin version if it is not.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 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 function safeTransfer(\n IERC20 token,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(address(token), abi.encodeWithSelector(token.transfer.selector, to, value));\n }\n\n function safeTransferFrom(\n IERC20 token,\n address from,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(address(token), abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n *\n * WARNING: `token` is assumed to be a contract: calls to EOAs will *not* revert.\n */\n function _callOptionalReturn(address token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves.\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = token.call(data);\n\n // If the low-level call didn't succeed we return whatever was returned from it.\n // solhint-disable-next-line no-inline-assembly\n assembly {\n if eq(success, 0) {\n returndatacopy(0, 0, returndatasize())\n revert(0, returndatasize())\n }\n }\n\n // Finally we check the returndata size is either zero or true - note that this check will always pass for EOAs\n _require(returndata.length == 0 || abi.decode(returndata, (bool)), Errors.SAFE_ERC20_CALL_FAILED);\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address recipient, uint256 amount) 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 `amount` as the allowance of `spender` over the 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 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` 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(\n address sender,\n address recipient,\n uint256 amount\n ) external returns (bool);\n\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"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\ninterface IAuthentication {\n /**\n * @dev Returns the action identifier associated with the external function described by `selector`.\n */\n function getActionId(bytes4 selector) external view returns (bytes32);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../solidity-utils/helpers/IAuthentication.sol\";\nimport \"../vault/IVault.sol\";\n\ninterface IAuthorizerAdaptor is IAuthentication {\n /**\n * @notice Returns the Balancer Vault\n */\n function getVault() external view returns (IVault);\n\n /**\n * @notice Returns the Authorizer\n */\n function getAuthorizer() external view returns (IAuthorizer);\n\n /**\n * @notice Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\n * @param target - Address of the contract to be called\n * @param data - Calldata to be sent to the target contract\n * @return The bytes encoded return value from the performed function call\n */\n function performAction(address target, bytes calldata data) external payable returns (bytes memory);\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\";\n\n/**\n * @dev Building block for performing access control on external functions.\n *\n * This contract is used via the `authenticate` modifier (or the `_authenticateCaller` function), which can be applied\n * to external functions to only make them callable by authorized accounts.\n *\n * Derived contracts must implement the `_canPerform` function, which holds the actual access control logic.\n */\nabstract contract Authentication is IAuthentication {\n bytes32 private immutable _actionIdDisambiguator;\n\n /**\n * @dev The main purpose of the `actionIdDisambiguator` is to prevent accidental function selector collisions in\n * multi contract systems.\n *\n * There are two main uses for it:\n * - if the contract is a singleton, any unique identifier can be used to make the associated action identifiers\n * unique. The contract's own address is a good option.\n * - if the contract belongs to a family that shares action identifiers for the same functions, an identifier\n * shared by the entire family (and no other contract) should be used instead.\n */\n constructor(bytes32 actionIdDisambiguator) {\n _actionIdDisambiguator = actionIdDisambiguator;\n }\n\n /**\n * @dev Reverts unless the caller is allowed to call this function. Should only be applied to external functions.\n */\n modifier authenticate() {\n _authenticateCaller();\n _;\n }\n\n /**\n * @dev Reverts unless the caller is allowed to call the entry point function.\n */\n function _authenticateCaller() internal view {\n bytes32 actionId = getActionId(msg.sig);\n _require(_canPerform(actionId, msg.sender), Errors.SENDER_NOT_ALLOWED);\n }\n\n function getActionId(bytes4 selector) public view override returns (bytes32) {\n // Each external function is dynamically assigned an action identifier as the hash of the disambiguator and the\n // function selector. Disambiguation is necessary to avoid potential collisions in the function selectors of\n // multiple contracts.\n return keccak256(abi.encodePacked(_actionIdDisambiguator, selector));\n }\n\n function _canPerform(bytes32 actionId, address user) internal view virtual returns (bool);\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\ninterface IAuthorizer {\n /**\n * @dev Returns true if `account` can perform the action described by `actionId` in the contract `where`.\n */\n function canPerform(\n bytes32 actionId,\n address account,\n address where\n ) external view returns (bool);\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IVault.sol\";\nimport \"./IAuthorizer.sol\";\n\ninterface IProtocolFeesCollector {\n event SwapFeePercentageChanged(uint256 newSwapFeePercentage);\n event FlashLoanFeePercentageChanged(uint256 newFlashLoanFeePercentage);\n\n function withdrawCollectedFees(\n IERC20[] calldata tokens,\n uint256[] calldata amounts,\n address recipient\n ) external;\n\n function setSwapFeePercentage(uint256 newSwapFeePercentage) external;\n\n function setFlashLoanFeePercentage(uint256 newFlashLoanFeePercentage) external;\n\n function getSwapFeePercentage() external view returns (uint256);\n\n function getFlashLoanFeePercentage() external view returns (uint256);\n\n function getCollectedFeeAmounts(IERC20[] memory tokens) external view returns (uint256[] memory feeAmounts);\n\n function getAuthorizer() external view returns (IAuthorizer);\n\n function vault() external view returns (IVault);\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\n/**\n * @dev This is an empty interface used to represent either ERC20-conforming token contracts or ETH (using the zero\n * address sentinel value). We're just relying on the fact that `interface` can be used to declare new address-like\n * types.\n *\n * This concept is unrelated to a Pool's Asset Managers.\n */\ninterface IAsset {\n // solhint-disable-previous-line no-empty-blocks\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\n// Inspired by Aave Protocol's IFlashLoanReceiver.\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface IFlashLoanRecipient {\n /**\n * @dev When `flashLoan` is called on the Vault, it invokes the `receiveFlashLoan` hook on the recipient.\n *\n * At the time of the call, the Vault will have transferred `amounts` for `tokens` to the recipient. Before this\n * call returns, the recipient must have transferred `amounts` plus `feeAmounts` for each token back to the\n * Vault, or else the entire flash loan will revert.\n *\n * `userData` is the same value passed in the `IVault.flashLoan` call.\n */\n function receiveFlashLoan(\n IERC20[] memory tokens,\n uint256[] memory amounts,\n uint256[] memory feeAmounts,\n bytes memory userData\n ) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Interface for the SignatureValidator helper, used to support meta-transactions.\n */\ninterface ISignaturesValidator {\n /**\n * @dev Returns the EIP712 domain separator.\n */\n function getDomainSeparator() external view returns (bytes32);\n\n /**\n * @dev Returns the next nonce used by an address to sign messages.\n */\n function getNextNonce(address user) external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Interface for the TemporarilyPausable helper.\n */\ninterface ITemporarilyPausable {\n /**\n * @dev Emitted every time the pause state changes by `_setPaused`.\n */\n event PausedStateChanged(bool paused);\n\n /**\n * @dev Returns the current paused state.\n */\n function getPausedState()\n external\n view\n returns (\n bool paused,\n uint256 pauseWindowEndTime,\n uint256 bufferPeriodEndTime\n );\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../openzeppelin/IERC20.sol\";\n\n/**\n * @dev Interface for WETH9.\n * See https://github.com/gnosis/canonical-weth/blob/0dd1ea3e295eef916d0c6223ec63141137d22d67/contracts/WETH9.sol\n */\ninterface IWETH is IERC20 {\n function deposit() external payable;\n\n function withdraw(uint256 amount) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\n// solhint-disable\n\n/**\n * @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n * supported.\n * Uses the default 'BAL' prefix for the error code\n */\nfunction _require(bool condition, uint256 errorCode) pure {\n if (!condition) _revert(errorCode);\n}\n\n/**\n * @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n * supported.\n */\nfunction _require(bool condition, uint256 errorCode, bytes3 prefix) pure {\n if (!condition) _revert(errorCode, prefix);\n}\n\n/**\n * @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported.\n * Uses the default 'BAL' prefix for the error code\n */\nfunction _revert(uint256 errorCode) pure {\n _revert(errorCode, 0x42414c); // This is the raw byte representation of \"BAL\"\n}\n\n/**\n * @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported.\n */\nfunction _revert(uint256 errorCode, bytes3 prefix) pure {\n uint256 prefixUint = uint256(uint24(prefix));\n // We're going to dynamically create a revert string based on the error code, with the following format:\n // 'BAL#{errorCode}'\n // where the code is left-padded with zeroes to three digits (so they range from 000 to 999).\n //\n // We don't have revert strings embedded in the contract to save bytecode size: it takes much less space to store a\n // number (8 to 16 bits) than the individual string characters.\n //\n // The dynamic string creation algorithm that follows could be implemented in Solidity, but assembly allows for a\n // much denser implementation, again saving bytecode size. Given this function unconditionally reverts, this is a\n // safe place to rely on it without worrying about how its usage might affect e.g. memory contents.\n assembly {\n // First, we need to compute the ASCII representation of the error code. We assume that it is in the 0-999\n // range, so we only need to convert three digits. To convert the digits to ASCII, we add 0x30, the value for\n // the '0' character.\n\n let units := add(mod(errorCode, 10), 0x30)\n\n errorCode := div(errorCode, 10)\n let tenths := add(mod(errorCode, 10), 0x30)\n\n errorCode := div(errorCode, 10)\n let hundreds := add(mod(errorCode, 10), 0x30)\n\n // With the individual characters, we can now construct the full string.\n // We first append the '#' character (0x23) to the prefix. In the case of 'BAL', it results in 0x42414c23 ('BAL#')\n // Then, we shift this by 24 (to provide space for the 3 bytes of the error code), and add the\n // characters to it, each shifted by a multiple of 8.\n // The revert reason is then shifted left by 200 bits (256 minus the length of the string, 7 characters * 8 bits\n // per character = 56) to locate it in the most significant part of the 256 slot (the beginning of a byte\n // array).\n let formattedPrefix := shl(24, add(0x23, shl(8, prefixUint)))\n\n let revertReason := shl(200, add(formattedPrefix, add(add(units, shl(8, tenths)), shl(16, hundreds))))\n\n // We can now encode the reason in memory, which can be safely overwritten as we're about to revert. The encoded\n // message will have the following layout:\n // [ revert reason identifier ] [ string location offset ] [ string length ] [ string contents ]\n\n // The Solidity revert reason identifier is 0x08c739a0, the function selector of the Error(string) function. We\n // also write zeroes to the next 28 bytes of memory, but those are about to be overwritten.\n mstore(0x0, 0x08c379a000000000000000000000000000000000000000000000000000000000)\n // Next is the offset to the location of the string, which will be placed immediately after (20 bytes away).\n mstore(0x04, 0x0000000000000000000000000000000000000000000000000000000000000020)\n // The string length is fixed: 7 characters.\n mstore(0x24, 7)\n // Finally, the string itself is stored.\n mstore(0x44, revertReason)\n\n // Even if the string is only 7 bytes long, we need to return a full 32 byte slot containing it. The length of\n // the encoded message is therefore 4 + 32 + 32 + 32 = 100.\n revert(0, 100)\n }\n}\n\nlibrary Errors {\n // Math\n uint256 internal constant ADD_OVERFLOW = 0;\n uint256 internal constant SUB_OVERFLOW = 1;\n uint256 internal constant SUB_UNDERFLOW = 2;\n uint256 internal constant MUL_OVERFLOW = 3;\n uint256 internal constant ZERO_DIVISION = 4;\n uint256 internal constant DIV_INTERNAL = 5;\n uint256 internal constant X_OUT_OF_BOUNDS = 6;\n uint256 internal constant Y_OUT_OF_BOUNDS = 7;\n uint256 internal constant PRODUCT_OUT_OF_BOUNDS = 8;\n uint256 internal constant INVALID_EXPONENT = 9;\n\n // Input\n uint256 internal constant OUT_OF_BOUNDS = 100;\n uint256 internal constant UNSORTED_ARRAY = 101;\n uint256 internal constant UNSORTED_TOKENS = 102;\n uint256 internal constant INPUT_LENGTH_MISMATCH = 103;\n uint256 internal constant ZERO_TOKEN = 104;\n\n // Shared pools\n uint256 internal constant MIN_TOKENS = 200;\n uint256 internal constant MAX_TOKENS = 201;\n uint256 internal constant MAX_SWAP_FEE_PERCENTAGE = 202;\n uint256 internal constant MIN_SWAP_FEE_PERCENTAGE = 203;\n uint256 internal constant MINIMUM_BPT = 204;\n uint256 internal constant CALLER_NOT_VAULT = 205;\n uint256 internal constant UNINITIALIZED = 206;\n uint256 internal constant BPT_IN_MAX_AMOUNT = 207;\n uint256 internal constant BPT_OUT_MIN_AMOUNT = 208;\n uint256 internal constant EXPIRED_PERMIT = 209;\n uint256 internal constant NOT_TWO_TOKENS = 210;\n uint256 internal constant DISABLED = 211;\n\n // Pools\n uint256 internal constant MIN_AMP = 300;\n uint256 internal constant MAX_AMP = 301;\n uint256 internal constant MIN_WEIGHT = 302;\n uint256 internal constant MAX_STABLE_TOKENS = 303;\n uint256 internal constant MAX_IN_RATIO = 304;\n uint256 internal constant MAX_OUT_RATIO = 305;\n uint256 internal constant MIN_BPT_IN_FOR_TOKEN_OUT = 306;\n uint256 internal constant MAX_OUT_BPT_FOR_TOKEN_IN = 307;\n uint256 internal constant NORMALIZED_WEIGHT_INVARIANT = 308;\n uint256 internal constant INVALID_TOKEN = 309;\n uint256 internal constant UNHANDLED_JOIN_KIND = 310;\n uint256 internal constant ZERO_INVARIANT = 311;\n uint256 internal constant ORACLE_INVALID_SECONDS_QUERY = 312;\n uint256 internal constant ORACLE_NOT_INITIALIZED = 313;\n uint256 internal constant ORACLE_QUERY_TOO_OLD = 314;\n uint256 internal constant ORACLE_INVALID_INDEX = 315;\n uint256 internal constant ORACLE_BAD_SECS = 316;\n uint256 internal constant AMP_END_TIME_TOO_CLOSE = 317;\n uint256 internal constant AMP_ONGOING_UPDATE = 318;\n uint256 internal constant AMP_RATE_TOO_HIGH = 319;\n uint256 internal constant AMP_NO_ONGOING_UPDATE = 320;\n uint256 internal constant STABLE_INVARIANT_DIDNT_CONVERGE = 321;\n uint256 internal constant STABLE_GET_BALANCE_DIDNT_CONVERGE = 322;\n uint256 internal constant RELAYER_NOT_CONTRACT = 323;\n uint256 internal constant BASE_POOL_RELAYER_NOT_CALLED = 324;\n uint256 internal constant REBALANCING_RELAYER_REENTERED = 325;\n uint256 internal constant GRADUAL_UPDATE_TIME_TRAVEL = 326;\n uint256 internal constant SWAPS_DISABLED = 327;\n uint256 internal constant CALLER_IS_NOT_LBP_OWNER = 328;\n uint256 internal constant PRICE_RATE_OVERFLOW = 329;\n uint256 internal constant INVALID_JOIN_EXIT_KIND_WHILE_SWAPS_DISABLED = 330;\n uint256 internal constant WEIGHT_CHANGE_TOO_FAST = 331;\n uint256 internal constant LOWER_GREATER_THAN_UPPER_TARGET = 332;\n uint256 internal constant UPPER_TARGET_TOO_HIGH = 333;\n uint256 internal constant UNHANDLED_BY_LINEAR_POOL = 334;\n uint256 internal constant OUT_OF_TARGET_RANGE = 335;\n uint256 internal constant UNHANDLED_EXIT_KIND = 336;\n uint256 internal constant UNAUTHORIZED_EXIT = 337;\n uint256 internal constant MAX_MANAGEMENT_SWAP_FEE_PERCENTAGE = 338;\n uint256 internal constant UNHANDLED_BY_MANAGED_POOL = 339;\n uint256 internal constant UNHANDLED_BY_PHANTOM_POOL = 340;\n uint256 internal constant TOKEN_DOES_NOT_HAVE_RATE_PROVIDER = 341;\n uint256 internal constant INVALID_INITIALIZATION = 342;\n uint256 internal constant OUT_OF_NEW_TARGET_RANGE = 343;\n uint256 internal constant FEATURE_DISABLED = 344;\n uint256 internal constant UNINITIALIZED_POOL_CONTROLLER = 345;\n uint256 internal constant SET_SWAP_FEE_DURING_FEE_CHANGE = 346;\n uint256 internal constant SET_SWAP_FEE_PENDING_FEE_CHANGE = 347;\n uint256 internal constant CHANGE_TOKENS_DURING_WEIGHT_CHANGE = 348;\n uint256 internal constant CHANGE_TOKENS_PENDING_WEIGHT_CHANGE = 349;\n uint256 internal constant MAX_WEIGHT = 350;\n uint256 internal constant UNAUTHORIZED_JOIN = 351;\n uint256 internal constant MAX_MANAGEMENT_AUM_FEE_PERCENTAGE = 352;\n uint256 internal constant FRACTIONAL_TARGET = 353;\n\n // Lib\n uint256 internal constant REENTRANCY = 400;\n uint256 internal constant SENDER_NOT_ALLOWED = 401;\n uint256 internal constant PAUSED = 402;\n uint256 internal constant PAUSE_WINDOW_EXPIRED = 403;\n uint256 internal constant MAX_PAUSE_WINDOW_DURATION = 404;\n uint256 internal constant MAX_BUFFER_PERIOD_DURATION = 405;\n uint256 internal constant INSUFFICIENT_BALANCE = 406;\n uint256 internal constant INSUFFICIENT_ALLOWANCE = 407;\n uint256 internal constant ERC20_TRANSFER_FROM_ZERO_ADDRESS = 408;\n uint256 internal constant ERC20_TRANSFER_TO_ZERO_ADDRESS = 409;\n uint256 internal constant ERC20_MINT_TO_ZERO_ADDRESS = 410;\n uint256 internal constant ERC20_BURN_FROM_ZERO_ADDRESS = 411;\n uint256 internal constant ERC20_APPROVE_FROM_ZERO_ADDRESS = 412;\n uint256 internal constant ERC20_APPROVE_TO_ZERO_ADDRESS = 413;\n uint256 internal constant ERC20_TRANSFER_EXCEEDS_ALLOWANCE = 414;\n uint256 internal constant ERC20_DECREASED_ALLOWANCE_BELOW_ZERO = 415;\n uint256 internal constant ERC20_TRANSFER_EXCEEDS_BALANCE = 416;\n uint256 internal constant ERC20_BURN_EXCEEDS_ALLOWANCE = 417;\n uint256 internal constant SAFE_ERC20_CALL_FAILED = 418;\n uint256 internal constant ADDRESS_INSUFFICIENT_BALANCE = 419;\n uint256 internal constant ADDRESS_CANNOT_SEND_VALUE = 420;\n uint256 internal constant SAFE_CAST_VALUE_CANT_FIT_INT256 = 421;\n uint256 internal constant GRANT_SENDER_NOT_ADMIN = 422;\n uint256 internal constant REVOKE_SENDER_NOT_ADMIN = 423;\n uint256 internal constant RENOUNCE_SENDER_NOT_ALLOWED = 424;\n uint256 internal constant BUFFER_PERIOD_EXPIRED = 425;\n uint256 internal constant CALLER_IS_NOT_OWNER = 426;\n uint256 internal constant NEW_OWNER_IS_ZERO = 427;\n uint256 internal constant CODE_DEPLOYMENT_FAILED = 428;\n uint256 internal constant CALL_TO_NON_CONTRACT = 429;\n uint256 internal constant LOW_LEVEL_CALL_FAILED = 430;\n uint256 internal constant NOT_PAUSED = 431;\n uint256 internal constant ADDRESS_ALREADY_ALLOWLISTED = 432;\n uint256 internal constant ADDRESS_NOT_ALLOWLISTED = 433;\n uint256 internal constant ERC20_BURN_EXCEEDS_BALANCE = 434;\n uint256 internal constant INVALID_OPERATION = 435;\n uint256 internal constant CODEC_OVERFLOW = 436;\n uint256 internal constant IN_RECOVERY_MODE = 437;\n uint256 internal constant NOT_IN_RECOVERY_MODE = 438;\n uint256 internal constant INDUCED_FAILURE = 439;\n uint256 internal constant EXPIRED_SIGNATURE = 440;\n uint256 internal constant MALFORMED_SIGNATURE = 441;\n uint256 internal constant SAFE_CAST_VALUE_CANT_FIT_UINT64 = 442;\n uint256 internal constant UNHANDLED_FEE_TYPE = 443;\n\n // Vault\n uint256 internal constant INVALID_POOL_ID = 500;\n uint256 internal constant CALLER_NOT_POOL = 501;\n uint256 internal constant SENDER_NOT_ASSET_MANAGER = 502;\n uint256 internal constant USER_DOESNT_ALLOW_RELAYER = 503;\n uint256 internal constant INVALID_SIGNATURE = 504;\n uint256 internal constant EXIT_BELOW_MIN = 505;\n uint256 internal constant JOIN_ABOVE_MAX = 506;\n uint256 internal constant SWAP_LIMIT = 507;\n uint256 internal constant SWAP_DEADLINE = 508;\n uint256 internal constant CANNOT_SWAP_SAME_TOKEN = 509;\n uint256 internal constant UNKNOWN_AMOUNT_IN_FIRST_SWAP = 510;\n uint256 internal constant MALCONSTRUCTED_MULTIHOP_SWAP = 511;\n uint256 internal constant INTERNAL_BALANCE_OVERFLOW = 512;\n uint256 internal constant INSUFFICIENT_INTERNAL_BALANCE = 513;\n uint256 internal constant INVALID_ETH_INTERNAL_BALANCE = 514;\n uint256 internal constant INVALID_POST_LOAN_BALANCE = 515;\n uint256 internal constant INSUFFICIENT_ETH = 516;\n uint256 internal constant UNALLOCATED_ETH = 517;\n uint256 internal constant ETH_TRANSFER = 518;\n uint256 internal constant CANNOT_USE_ETH_SENTINEL = 519;\n uint256 internal constant TOKENS_MISMATCH = 520;\n uint256 internal constant TOKEN_NOT_REGISTERED = 521;\n uint256 internal constant TOKEN_ALREADY_REGISTERED = 522;\n uint256 internal constant TOKENS_ALREADY_SET = 523;\n uint256 internal constant TOKENS_LENGTH_MUST_BE_2 = 524;\n uint256 internal constant NONZERO_TOKEN_BALANCE = 525;\n uint256 internal constant BALANCE_TOTAL_OVERFLOW = 526;\n uint256 internal constant POOL_NO_TOKENS = 527;\n uint256 internal constant INSUFFICIENT_FLASH_LOAN_BALANCE = 528;\n\n // Fees\n uint256 internal constant SWAP_FEE_PERCENTAGE_TOO_HIGH = 600;\n uint256 internal constant FLASH_LOAN_FEE_PERCENTAGE_TOO_HIGH = 601;\n uint256 internal constant INSUFFICIENT_FLASH_LOAN_FEE_AMOUNT = 602;\n uint256 internal constant AUM_FEE_PERCENTAGE_TOO_HIGH = 603;\n\n // Misc\n uint256 internal constant UNIMPLEMENTED = 998;\n uint256 internal constant SHOULD_NOT_HAPPEN = 999;\n}\n"},"contracts/BALTokenHolderFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\";\n\nimport \"./BALTokenHolder.sol\";\n\ncontract BALTokenHolderFactory is IBALTokenHolderFactory {\n IBalancerToken private immutable _balancerToken;\n IVault private immutable _vault;\n\n mapping(address => bool) private _factoryCreatedHolders;\n\n event BALTokenHolderCreated(BALTokenHolder balTokenHolder, string name);\n\n constructor(IBalancerToken balancerToken, IVault vault) {\n _balancerToken = balancerToken;\n _vault = vault;\n }\n\n function getBalancerToken() public view override returns (IBalancerToken) {\n return _balancerToken;\n }\n\n function getVault() public view override returns (IVault) {\n return _vault;\n }\n\n function isHolderFromFactory(address holder) external view override returns (bool) {\n return _factoryCreatedHolders[holder];\n }\n\n function create(string memory name) external override returns (IBALTokenHolder) {\n BALTokenHolder holder = new BALTokenHolder(getBalancerToken(), getVault(), name);\n\n _factoryCreatedHolders[address(holder)] = true;\n emit BALTokenHolderCreated(holder, name);\n\n return holder;\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../vault/IVault.sol\";\nimport \"../liquidity-mining/IBalancerToken.sol\";\n\nimport \"./IBALTokenHolder.sol\";\n\ninterface IBALTokenHolderFactory {\n function getBalancerToken() external view returns (IBalancerToken);\n\n function getVault() external view returns (IVault);\n\n function isHolderFromFactory(address holder) external view returns (bool);\n\n function create(string memory name) external returns (IBALTokenHolder);\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IVault.sol\";\n\ninterface IPoolSwapStructs {\n // This is not really an interface - it just defines common structs used by other interfaces: IGeneralPool and\n // IMinimalSwapInfoPool.\n //\n // This data structure represents a request for a token swap, where `kind` indicates the swap type ('given in' or\n // 'given out') which indicates whether or not the amount sent by the pool is known.\n //\n // The pool receives `tokenIn` and sends `tokenOut`. `amount` is the number of `tokenIn` tokens the pool will take\n // in, or the number of `tokenOut` tokens the Pool will send out, depending on the given swap `kind`.\n //\n // All other fields are not strictly necessary for most swaps, but are provided to support advanced scenarios in\n // some Pools.\n //\n // `poolId` is the ID of the Pool involved in the swap - this is useful for Pool contracts that implement more than\n // one Pool.\n //\n // The meaning of `lastChangeBlock` depends on the Pool specialization:\n // - Two Token or Minimal Swap Info: the last block in which either `tokenIn` or `tokenOut` changed its total\n // balance.\n // - General: the last block in which *any* of the Pool's registered tokens changed its total balance.\n //\n // `from` is the origin address for the funds the Pool receives, and `to` is the destination address\n // where the Pool sends the outgoing tokens.\n //\n // `userData` is extra data provided by the caller - typically a signature from a trusted party.\n struct SwapRequest {\n IVault.SwapKind kind;\n IERC20 tokenIn;\n IERC20 tokenOut;\n uint256 amount;\n // Misc data\n bytes32 poolId;\n uint256 lastChangeBlock;\n address from;\n address to;\n bytes userData;\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase, var-name-mixedcase\n\ninterface IRewardTokenDistributor {\n struct Reward {\n IERC20 token;\n address distributor;\n uint256 period_finish;\n uint256 rate;\n uint256 last_update;\n uint256 integral;\n }\n\n function reward_tokens(uint256 index) external view returns (IERC20);\n\n function reward_data(IERC20 token) external view returns (Reward memory);\n\n function claim_rewards(address user) external;\n\n function add_reward(IERC20 rewardToken, address distributor) external;\n\n function set_reward_distributor(IERC20 rewardToken, address distributor) external;\n\n function deposit_reward_token(IERC20 rewardToken, uint256 amount) external;\n\n function claimable_reward(address rewardToken, address user) external view returns (uint256);\n\n function claimable_reward_write(address rewardToken, address user) external returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./ILiquidityGauge.sol\";\nimport \"./IRewardTokenDistributor.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase, var-name-mixedcase\n\ninterface IStakingLiquidityGauge is IRewardTokenDistributor, ILiquidityGauge, IERC20 {\n function initialize(address lpToken, uint256 relativeWeightCap) external;\n\n function lp_token() external view returns (IERC20);\n\n function deposit(uint256 value, address recipient) external;\n\n function withdraw(uint256 value) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n// solhint-disable func-param-name-mixedcase\n\ninterface ILiquidityGauge {\n // solhint-disable-next-line var-name-mixedcase\n event RelativeWeightCapChanged(uint256 new_relative_weight_cap);\n\n /**\n * @notice Returns BAL liquidity emissions calculated during checkpoints for the given user.\n * @param user User address.\n * @return uint256 BAL amount to issue for the address.\n */\n function integrate_fraction(address user) external view returns (uint256);\n\n /**\n * @notice Record a checkpoint for a given user.\n * @param user User address.\n * @return bool Always true.\n */\n function user_checkpoint(address user) external returns (bool);\n\n /**\n * @notice Returns true if gauge is killed; false otherwise.\n */\n function is_killed() external view returns (bool);\n\n /**\n * @notice Kills the gauge so it cannot mint BAL.\n */\n function killGauge() external;\n\n /**\n * @notice Unkills the gauge so it can mint BAL again.\n */\n function unkillGauge() external;\n\n /**\n * @notice Sets a new relative weight cap for the gauge.\n * The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\n * @param relativeWeightCap New relative weight cap.\n */\n function setRelativeWeightCap(uint256 relativeWeightCap) external;\n\n /**\n * @notice Gets the relative weight cap for the gauge.\n */\n function getRelativeWeightCap() external view returns (uint256);\n\n /**\n * @notice Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\n * @param time Timestamp in the past or present.\n */\n function getCappedRelativeWeight(uint256 time) external view returns (uint256);\n}\n"},"contracts/relayer/GaugeActions.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title GaugeActions\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract GaugeActions is IBaseRelayerLibrary {\n using Address for address payable;\n\n IBalancerMinter private immutable _balancerMinter;\n\n /**\n * @dev The zero address may be passed as balancerMinter to safely disable features\n * which only exist on mainnet\n */\n constructor(IBalancerMinter balancerMinter) {\n _balancerMinter = balancerMinter;\n }\n\n function gaugeDeposit(\n IStakingLiquidityGauge gauge,\n address sender,\n address recipient,\n uint256 amount\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // We can query which token to pull and approve from the wrapper contract.\n IERC20 bptToken = gauge.lp_token();\n\n // The deposit caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, bptToken, amount);\n }\n\n bptToken.approve(address(gauge), amount);\n gauge.deposit(amount, recipient);\n }\n\n function gaugeWithdraw(\n IStakingLiquidityGauge gauge,\n address sender,\n address recipient,\n uint256 amount\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // The unwrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, IERC20(gauge), amount);\n }\n\n // No approval is needed here, as the gauge Tokens are burned directly from the relayer's account.\n gauge.withdraw(amount);\n\n // Gauge does not support withdrawing BPT to another address atomically.\n // If intended recipient is not the relayer then forward the withdrawn BPT on to the recipient.\n if (recipient != address(this)) {\n IERC20 bptToken = gauge.lp_token();\n\n bptToken.transfer(recipient, amount);\n }\n }\n\n function gaugeMint(address[] calldata gauges, uint256 outputReference) external payable {\n uint256 balMinted = _balancerMinter.mintManyFor(gauges, msg.sender);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, balMinted);\n }\n }\n\n function gaugeSetMinterApproval(\n bool approval,\n address user,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external payable {\n _balancerMinter.setMinterApprovalWithSignature(address(this), approval, user, deadline, v, r, s);\n }\n\n function gaugeClaimRewards(IStakingLiquidityGauge[] calldata gauges) external payable {\n uint256 numGauges = gauges.length;\n for (uint256 i; i < numGauges; ++i) {\n gauges[i].claim_rewards(msg.sender);\n }\n }\n}\n"},"contracts/relayer/IBaseRelayerLibrary.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\";\n\n/**\n * @title IBaseRelayerLibrary\n */\nabstract contract IBaseRelayerLibrary is AssetHelpers {\n constructor(IWETH weth) AssetHelpers(weth) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function getVault() public view virtual returns (IVault);\n\n function approveVault(IERC20 token, uint256 amount) public virtual;\n\n function peekChainedReferenceValue(uint256 ref) public view virtual returns (uint256);\n\n function _pullToken(\n address sender,\n IERC20 token,\n uint256 amount\n ) internal virtual;\n\n function _pullTokens(\n address sender,\n IERC20[] memory tokens,\n uint256[] memory amounts\n ) internal virtual;\n\n function _isChainedReference(uint256 amount) internal pure virtual returns (bool);\n\n function _setChainedReferenceValue(uint256 ref, uint256 value) internal virtual;\n\n function _getChainedReferenceValue(uint256 ref) internal virtual returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"./IBalancerTokenAdmin.sol\";\nimport \"./IGaugeController.sol\";\n\ninterface IBalancerMinter {\n event Minted(address indexed recipient, address gauge, uint256 minted);\n\n /**\n * @notice Returns the address of the Balancer Governance Token\n */\n function getBalancerToken() external view returns (IERC20);\n\n /**\n * @notice Returns the address of the Balancer Token Admin contract\n */\n function getBalancerTokenAdmin() external view returns (IBalancerTokenAdmin);\n\n /**\n * @notice Returns the address of the Gauge Controller\n */\n function getGaugeController() external view returns (IGaugeController);\n\n /**\n * @notice Mint everything which belongs to `msg.sender` and send to them\n * @param gauge `LiquidityGauge` address to get mintable amount from\n */\n function mint(address gauge) external returns (uint256);\n\n /**\n * @notice Mint everything which belongs to `msg.sender` across multiple gauges\n * @param gauges List of `LiquidityGauge` addresses\n */\n function mintMany(address[] calldata gauges) external returns (uint256);\n\n /**\n * @notice Mint tokens for `user`\n * @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n * @param gauge `LiquidityGauge` address to get mintable amount from\n * @param user Address to mint to\n */\n function mintFor(address gauge, address user) external returns (uint256);\n\n /**\n * @notice Mint tokens for `user` across multiple gauges\n * @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n * @param gauges List of `LiquidityGauge` addresses\n * @param user Address to mint to\n */\n function mintManyFor(address[] calldata gauges, address user) external returns (uint256);\n\n /**\n * @notice The total number of tokens minted for `user` from `gauge`\n */\n function minted(address user, address gauge) external view returns (uint256);\n\n /**\n * @notice Whether `minter` is approved to mint tokens for `user`\n */\n function getMinterApproval(address minter, address user) external view returns (bool);\n\n /**\n * @notice Set whether `minter` is approved to mint tokens on your behalf\n */\n function setMinterApproval(address minter, bool approval) external;\n\n /**\n * @notice Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing\n * them.\n */\n function setMinterApprovalWithSignature(\n address minter,\n bool approval,\n address user,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n // The below functions are near-duplicates of functions available above.\n // They are included for ABI compatibility with snake_casing as used in vyper contracts.\n // solhint-disable func-name-mixedcase\n\n /**\n * @notice Whether `minter` is approved to mint tokens for `user`\n */\n function allowed_to_mint_for(address minter, address user) external view returns (bool);\n\n /**\n * @notice Mint everything which belongs to `msg.sender` across multiple gauges\n * @dev This function is not recommended as `mintMany()` is more flexible and gas efficient\n * @param gauges List of `LiquidityGauge` addresses\n */\n function mint_many(address[8] calldata gauges) external;\n\n /**\n * @notice Mint tokens for `user`\n * @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n * @param gauge `LiquidityGauge` address to get mintable amount from\n * @param user Address to mint to\n */\n function mint_for(address gauge, address user) external;\n\n /**\n * @notice Toggle whether `minter` is approved to mint tokens for `user`\n */\n function toggle_approve_mint(address minter) external;\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the Address library from OpenZeppelin Contracts, altered by removing the `isContract` checks on\n// `functionCall` and `functionDelegateCall` in order to save gas, as the recipients are known to be contracts.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize, which returns 0 for contracts in\n // construction, since the code is only stored at the end of the\n // constructor execution.\n\n uint256 size;\n // solhint-disable-next-line no-inline-assembly\n assembly {\n size := extcodesize(account)\n }\n return size > 0;\n }\n\n // solhint-disable max-line-length\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n _require(address(this).balance >= amount, Errors.ADDRESS_INSUFFICIENT_BALANCE);\n\n // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\n (bool success, ) = recipient.call{ value: amount }(\"\");\n _require(success, Errors.ADDRESS_CANNOT_SEND_VALUE);\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.call(data);\n return verifyCallResult(success, returndata);\n }\n\n // solhint-enable max-line-length\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but passing some native ETH as msg.value to the call.\n *\n * _Available since v3.4._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.call{ value: value }(data);\n return verifyCallResult(success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResult(success, returndata);\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling up the\n * revert reason or using the one provided.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n // solhint-disable-next-line no-inline-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n _revert(Errors.LOW_LEVEL_CALL_FAILED);\n }\n }\n }\n}\n"},"@balancer-labs/v2-vault/contracts/AssetHelpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\";\n\nabstract contract AssetHelpers {\n // solhint-disable-next-line var-name-mixedcase\n IWETH private immutable _weth;\n\n // Sentinel value used to indicate WETH with wrapping/unwrapping semantics. The zero address is a good choice for\n // multiple reasons: it is cheap to pass as a calldata argument, it is a known invalid token and non-contract, and\n // it is an address Pools cannot register as a token.\n address private constant _ETH = address(0);\n\n constructor(IWETH weth) {\n _weth = weth;\n }\n\n // solhint-disable-next-line func-name-mixedcase\n function _WETH() internal view returns (IWETH) {\n return _weth;\n }\n\n /**\n * @dev Returns true if `asset` is the sentinel value that represents ETH.\n */\n function _isETH(IAsset asset) internal pure returns (bool) {\n return address(asset) == _ETH;\n }\n\n /**\n * @dev Translates `asset` into an equivalent IERC20 token address. If `asset` represents ETH, it will be translated\n * to the WETH contract.\n */\n function _translateToIERC20(IAsset asset) internal view returns (IERC20) {\n return _isETH(asset) ? _WETH() : _asIERC20(asset);\n }\n\n /**\n * @dev Same as `_translateToIERC20(IAsset)`, but for an entire array.\n */\n function _translateToIERC20(IAsset[] memory assets) internal view returns (IERC20[] memory) {\n IERC20[] memory tokens = new IERC20[](assets.length);\n for (uint256 i = 0; i < assets.length; ++i) {\n tokens[i] = _translateToIERC20(assets[i]);\n }\n return tokens;\n }\n\n /**\n * @dev Interprets `asset` as an IERC20 token. This function should only be called on `asset` if `_isETH` previously\n * returned false for it, that is, if `asset` is guaranteed not to be the ETH sentinel value.\n */\n function _asIERC20(IAsset asset) internal pure returns (IERC20) {\n return IERC20(address(asset));\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../solidity-utils/helpers/IAuthentication.sol\";\n\nimport \"./IBalancerToken.sol\";\n\ninterface IBalancerTokenAdmin is IAuthentication {\n // solhint-disable func-name-mixedcase\n function INITIAL_RATE() external view returns (uint256);\n\n function RATE_REDUCTION_TIME() external view returns (uint256);\n\n function RATE_REDUCTION_COEFFICIENT() external view returns (uint256);\n\n function RATE_DENOMINATOR() external view returns (uint256);\n\n // solhint-enable func-name-mixedcase\n\n /**\n * @notice Returns the address of the Balancer Governance Token\n */\n function getBalancerToken() external view returns (IBalancerToken);\n\n function activate() external;\n\n function rate() external view returns (uint256);\n\n function startEpochTimeWrite() external returns (uint256);\n\n function mint(address to, uint256 amount) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IAuthorizerAdaptor.sol\";\nimport \"./IVotingEscrow.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n\ninterface IGaugeController {\n function checkpoint_gauge(address gauge) external;\n\n function gauge_relative_weight(address gauge, uint256 time) external view returns (uint256);\n\n function voting_escrow() external view returns (IVotingEscrow);\n\n function token() external view returns (IERC20);\n\n function add_type(string calldata name, uint256 weight) external;\n\n function change_type_weight(int128 typeId, uint256 weight) external;\n\n function add_gauge(address gauge, int128 gaugeType) external;\n\n function n_gauge_types() external view returns (int128);\n\n function gauge_types(address gauge) external view returns (int128);\n\n function admin() external view returns (IAuthorizerAdaptor);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"./IAuthorizerAdaptor.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n\ninterface IVotingEscrow {\n struct Point {\n int128 bias;\n int128 slope; // - dweight / dt\n uint256 ts;\n uint256 blk; // block\n }\n\n function epoch() external view returns (uint256);\n\n function totalSupply(uint256 timestamp) external view returns (uint256);\n\n function user_point_epoch(address user) external view returns (uint256);\n\n function point_history(uint256 timestamp) external view returns (Point memory);\n\n function user_point_history(address user, uint256 timestamp) external view returns (Point memory);\n\n function checkpoint() external;\n\n function admin() external view returns (IAuthorizerAdaptor);\n\n function smart_wallet_checker() external view returns (address);\n\n function commit_smart_wallet_checker(address newSmartWalletChecker) external;\n\n function apply_smart_wallet_checker() external;\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\";\n\nimport \"../openzeppelin/EIP712.sol\";\n\n/**\n * @dev Utility for signing Solidity function calls.\n */\nabstract contract EOASignaturesValidator is ISignaturesValidator, EIP712 {\n // Replay attack prevention for each account.\n mapping(address => uint256) internal _nextNonce;\n\n function getDomainSeparator() public view override returns (bytes32) {\n return _domainSeparatorV4();\n }\n\n function getNextNonce(address account) public view override returns (uint256) {\n return _nextNonce[account];\n }\n\n function _ensureValidSignature(\n address account,\n bytes32 structHash,\n bytes memory signature,\n uint256 errorCode\n ) internal {\n return _ensureValidSignature(account, structHash, signature, type(uint256).max, errorCode);\n }\n\n function _ensureValidSignature(\n address account,\n bytes32 structHash,\n bytes memory signature,\n uint256 deadline,\n uint256 errorCode\n ) internal {\n bytes32 digest = _hashTypedDataV4(structHash);\n _require(_isValidSignature(account, digest, signature), errorCode);\n\n // We could check for the deadline before validating the signature, but this leads to saner error processing (as\n // we only care about expired deadlines if the signature is correct) and only affects the gas cost of the revert\n // scenario, which will only occur infrequently, if ever.\n // The deadline is timestamp-based: it should not be relied upon for sub-minute accuracy.\n // solhint-disable-next-line not-rely-on-time\n _require(deadline >= block.timestamp, Errors.EXPIRED_SIGNATURE);\n\n // We only advance the nonce after validating the signature. This is irrelevant for this module, but it can be\n // important in derived contracts that override _isValidSignature (e.g. SignaturesValidator), as we want for\n // the observable state to still have the current nonce as the next valid one.\n _nextNonce[account] += 1;\n }\n\n function _isValidSignature(\n address account,\n bytes32 digest,\n bytes memory signature\n ) internal view virtual returns (bool) {\n _require(signature.length == 65, Errors.MALFORMED_SIGNATURE);\n\n bytes32 r;\n bytes32 s;\n uint8 v;\n\n // ecrecover takes the r, s and v signature parameters, and the only way to get them is to use assembly.\n // solhint-disable-next-line no-inline-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n\n address recoveredAddress = ecrecover(digest, v, r, s);\n\n // ecrecover returns the zero address on recover failure, so we need to handle that explicitly.\n return (recoveredAddress != address(0) && recoveredAddress == account);\n }\n\n function _toArraySignature(\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (bytes memory) {\n bytes memory signature = new bytes(65);\n // solhint-disable-next-line no-inline-assembly\n assembly {\n mstore(add(signature, 32), r)\n mstore(add(signature, 64), s)\n mstore8(add(signature, 96), v)\n }\n\n return signature;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * _Available since v3.4._\n */\nabstract contract EIP712 {\n /* solhint-disable var-name-mixedcase */\n bytes32 private immutable _HASHED_NAME;\n bytes32 private immutable _HASHED_VERSION;\n bytes32 private immutable _TYPE_HASH;\n\n /* solhint-enable var-name-mixedcase */\n\n /**\n * @dev Initializes the domain separator and parameter caches.\n *\n * The meaning of `name` and `version` is specified in\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n *\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n * - `version`: the current major version of the signing domain.\n *\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n * contract upgrade].\n */\n constructor(string memory name, string memory version) {\n _HASHED_NAME = keccak256(bytes(name));\n _HASHED_VERSION = keccak256(bytes(version));\n _TYPE_HASH = keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\");\n }\n\n /**\n * @dev Returns the domain separator for the current chain.\n */\n function _domainSeparatorV4() internal view virtual returns (bytes32) {\n return keccak256(abi.encode(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION, _getChainId(), address(this)));\n }\n\n /**\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n * function returns the hash of the fully encoded EIP712 message for this domain.\n *\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n *\n * ```solidity\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n * keccak256(\"Mail(address to,string contents)\"),\n * mailTo,\n * keccak256(bytes(mailContents))\n * )));\n * address signer = ECDSA.recover(digest, signature);\n * ```\n */\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19\\x01\", _domainSeparatorV4(), structHash));\n }\n\n // solc-ignore-next-line func-mutability\n function _getChainId() private view returns (uint256 chainId) {\n // solhint-disable-next-line no-inline-assembly\n assembly {\n chainId := chainid()\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\";\n\nimport \"./ERC20.sol\";\nimport \"../helpers/EOASignaturesValidator.sol\";\n\n/**\n * @dev Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n *\n * _Available since v3.4._\n */\nabstract contract ERC20Permit is ERC20, IERC20Permit, EOASignaturesValidator {\n // solhint-disable-next-line var-name-mixedcase\n bytes32 private constant _PERMIT_TYPEHASH = keccak256(\n \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\"\n );\n\n /**\n * @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\"1\"`.\n *\n * It's a good idea to use the same `name` that is defined as the ERC20 token name.\n */\n constructor(string memory name) EIP712(name, \"1\") {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @dev See {IERC20Permit-permit}.\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public virtual override {\n bytes32 structHash = keccak256(\n abi.encode(_PERMIT_TYPEHASH, owner, spender, value, getNextNonce(owner), deadline)\n );\n\n _ensureValidSignature(owner, structHash, _toArraySignature(v, r, s), deadline, Errors.INVALID_SIGNATURE);\n\n _approve(owner, spender, value);\n }\n\n /**\n * @dev See {IERC20Permit-nonces}.\n */\n function nonces(address owner) public view override returns (uint256) {\n return getNextNonce(owner);\n }\n\n /**\n * @dev See {IERC20Permit-DOMAIN_SEPARATOR}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view override returns (bytes32) {\n return getDomainSeparator();\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n */\ninterface IERC20Permit {\n /**\n * @dev Sets `value` as the allowance of `spender` over `owner`'s tokens,\n * given `owner`'s signed approval.\n *\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n * ordering also apply here.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `deadline` must be a timestamp in the future.\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n * over the EIP712-formatted function arguments.\n * - the signature must use ``owner``'s current nonce (see {nonces}).\n *\n * For more information on the signature format, see the\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n * section].\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @dev Returns the current nonce for `owner`. This value must be\n * included whenever a signature is generated for {permit}.\n *\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\n * prevents a signature from being used multiple times.\n */\n function nonces(address owner) external view returns (uint256);\n\n /**\n * @dev Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./SafeMath.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 * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin guidelines: functions revert instead\n * of returning `false` on failure. This behavior is nonetheless conventional\n * and does not conflict with the expectations of ERC20 applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is IERC20 {\n using SafeMath for uint256;\n\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n uint8 private _decimals;\n\n /**\n * @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n * a default value of 18.\n *\n * To select a different value for {decimals}, use {_setupDecimals}.\n *\n * All three of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n _decimals = 18;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view 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 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 value {ERC20} uses, unless {_setupDecimals} is\n * called.\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 returns (uint8) {\n return _decimals;\n }\n\n /**\n * @dev See {IERC20-totalSupply}. The total supply should only be read using this function\n *\n * Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n * storage values).\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev Sets a new value for the total supply. It should only be set using this function.\n *\n * * Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n * storage values).\n */\n function _setTotalSupply(uint256 value) internal virtual {\n _totalSupply = value;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `recipient` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n _transfer(msg.sender, recipient, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n _approve(msg.sender, spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * Requirements:\n *\n * - `sender` and `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n * - the caller must have allowance for ``sender``'s tokens of at least\n * `amount`.\n */\n function transferFrom(\n address sender,\n address recipient,\n uint256 amount\n ) public virtual override returns (bool) {\n _transfer(sender, recipient, amount);\n _approve(\n sender,\n msg.sender,\n _allowances[sender][msg.sender].sub(amount, Errors.ERC20_TRANSFER_EXCEEDS_ALLOWANCE)\n );\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n _approve(\n msg.sender,\n spender,\n _allowances[msg.sender][spender].sub(subtractedValue, Errors.ERC20_DECREASED_ALLOWANCE_BELOW_ZERO)\n );\n return true;\n }\n\n /**\n * @dev Moves tokens `amount` from `sender` to `recipient`.\n *\n * This is 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 * Requirements:\n *\n * - `sender` cannot be the zero address.\n * - `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n */\n function _transfer(\n address sender,\n address recipient,\n uint256 amount\n ) internal virtual {\n _require(sender != address(0), Errors.ERC20_TRANSFER_FROM_ZERO_ADDRESS);\n _require(recipient != address(0), Errors.ERC20_TRANSFER_TO_ZERO_ADDRESS);\n\n _beforeTokenTransfer(sender, recipient, amount);\n\n _balances[sender] = _balances[sender].sub(amount, Errors.ERC20_TRANSFER_EXCEEDS_BALANCE);\n _balances[recipient] = _balances[recipient].add(amount);\n emit Transfer(sender, recipient, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n _beforeTokenTransfer(address(0), account, amount);\n\n _setTotalSupply(totalSupply().add(amount));\n _balances[account] = _balances[account].add(amount);\n emit Transfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n _require(account != address(0), Errors.ERC20_BURN_FROM_ZERO_ADDRESS);\n\n _beforeTokenTransfer(account, address(0), amount);\n\n _balances[account] = _balances[account].sub(amount, Errors.ERC20_BURN_EXCEEDS_BALANCE);\n _setTotalSupply(totalSupply().sub(amount));\n emit Transfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` 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 function _approve(\n address owner,\n address spender,\n uint256 amount\n ) internal virtual {\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Sets {decimals} to a value other than the default one of 18.\n *\n * WARNING: This function should only be called from the constructor. Most\n * applications that interact with token contracts will not expect\n * {decimals} to ever change, and may work incorrectly if it does.\n */\n function _setupDecimals(uint8 decimals_) internal {\n _decimals = decimals_;\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be to transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * 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 SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n _require(c >= a, Errors.ADD_OVERFLOW);\n\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n return sub(a, b, Errors.SUB_OVERFLOW);\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(\n uint256 a,\n uint256 b,\n uint256 errorCode\n ) internal pure returns (uint256) {\n _require(b <= a, errorCode);\n uint256 c = a - b;\n\n return c;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"./ERC20.sol\";\n\n/**\n * @dev Extension of {ERC20} that allows token holders to destroy both their own\n * tokens and those that they have an allowance for, in a way that can be\n * recognized off-chain (via event analysis).\n */\nabstract contract ERC20Burnable is ERC20 {\n using SafeMath for uint256;\n\n /**\n * @dev Destroys `amount` tokens from the caller.\n *\n * See {ERC20-_burn}.\n */\n function burn(uint256 amount) public virtual {\n _burn(msg.sender, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\n * allowance.\n *\n * See {ERC20-_burn} and {ERC20-allowance}.\n *\n * Requirements:\n *\n * - the caller must have allowance for ``accounts``'s tokens of at least\n * `amount`.\n */\n function burnFrom(address account, uint256 amount) public virtual {\n uint256 decreasedAllowance = allowance(account, msg.sender).sub(amount, Errors.ERC20_BURN_EXCEEDS_ALLOWANCE);\n\n _approve(account, msg.sender, decreasedAllowance);\n _burn(account, amount);\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../openzeppelin/ERC20Burnable.sol\";\nimport \"../openzeppelin/ERC20Permit.sol\";\nimport \"../openzeppelin/ERC20.sol\";\n\ncontract TestToken is ERC20, ERC20Burnable, ERC20Permit {\n constructor(\n string memory name,\n string memory symbol,\n uint8 decimals\n ) ERC20(name, symbol) ERC20Permit(name) {\n _setupDecimals(decimals);\n }\n\n function mint(address recipient, uint256 amount) external {\n _mint(recipient, amount);\n }\n}\n"},"contracts/test/MockStETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\";\n\ncontract MockStETH is TestToken, IstETH {\n constructor(\n string memory name,\n string memory symbol,\n uint8 decimals\n ) TestToken(name, symbol, decimals) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n event EthStaked(uint256 amount);\n\n function submit(address) external payable override returns (uint256) {\n _mint(msg.sender, msg.value);\n emit EthStaked(msg.value);\n return msg.value;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\nimport \"./LogExpMath.sol\";\n\n/* solhint-disable private-vars-leading-underscore */\n\nlibrary FixedPoint {\n uint256 internal constant ONE = 1e18; // 18 decimal places\n uint256 internal constant TWO = 2 * ONE;\n uint256 internal constant FOUR = 4 * ONE;\n uint256 internal constant MAX_POW_RELATIVE_ERROR = 10000; // 10^(-14)\n\n // Minimum base for the power function when the exponent is 'free' (larger than ONE).\n uint256 internal constant MIN_POW_BASE_FREE_EXPONENT = 0.7e18;\n\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n // Fixed Point addition is the same as regular checked addition\n\n uint256 c = a + b;\n _require(c >= a, Errors.ADD_OVERFLOW);\n return c;\n }\n\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n // Fixed Point addition is the same as regular checked addition\n\n _require(b <= a, Errors.SUB_OVERFLOW);\n uint256 c = a - b;\n return c;\n }\n\n function mulDown(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 product = a * b;\n _require(a == 0 || product / a == b, Errors.MUL_OVERFLOW);\n\n return product / ONE;\n }\n\n function mulUp(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 product = a * b;\n _require(a == 0 || product / a == b, Errors.MUL_OVERFLOW);\n\n if (product == 0) {\n return 0;\n } else {\n // The traditional divUp formula is:\n // divUp(x, y) := (x + y - 1) / y\n // To avoid intermediate overflow in the addition, we distribute the division and get:\n // divUp(x, y) := (x - 1) / y + 1\n // Note that this requires x != 0, which we already tested for.\n\n return ((product - 1) / ONE) + 1;\n }\n }\n\n function divDown(uint256 a, uint256 b) internal pure returns (uint256) {\n _require(b != 0, Errors.ZERO_DIVISION);\n\n if (a == 0) {\n return 0;\n } else {\n uint256 aInflated = a * ONE;\n _require(aInflated / a == ONE, Errors.DIV_INTERNAL); // mul overflow\n\n return aInflated / b;\n }\n }\n\n function divUp(uint256 a, uint256 b) internal pure returns (uint256) {\n _require(b != 0, Errors.ZERO_DIVISION);\n\n if (a == 0) {\n return 0;\n } else {\n uint256 aInflated = a * ONE;\n _require(aInflated / a == ONE, Errors.DIV_INTERNAL); // mul overflow\n\n // The traditional divUp formula is:\n // divUp(x, y) := (x + y - 1) / y\n // To avoid intermediate overflow in the addition, we distribute the division and get:\n // divUp(x, y) := (x - 1) / y + 1\n // Note that this requires x != 0, which we already tested for.\n\n return ((aInflated - 1) / b) + 1;\n }\n }\n\n /**\n * @dev Returns x^y, assuming both are fixed point numbers, rounding down. The result is guaranteed to not be above\n * the true value (that is, the error function expected - actual is always positive).\n */\n function powDown(uint256 x, uint256 y) internal pure returns (uint256) {\n // Optimize for when y equals 1.0, 2.0 or 4.0, as those are very simple to implement and occur often in 50/50\n // and 80/20 Weighted Pools\n if (y == ONE) {\n return x;\n } else if (y == TWO) {\n return mulDown(x, x);\n } else if (y == FOUR) {\n uint256 square = mulDown(x, x);\n return mulDown(square, square);\n } else {\n uint256 raw = LogExpMath.pow(x, y);\n uint256 maxError = add(mulUp(raw, MAX_POW_RELATIVE_ERROR), 1);\n\n if (raw < maxError) {\n return 0;\n } else {\n return sub(raw, maxError);\n }\n }\n }\n\n /**\n * @dev Returns x^y, assuming both are fixed point numbers, rounding up. The result is guaranteed to not be below\n * the true value (that is, the error function expected - actual is always negative).\n */\n function powUp(uint256 x, uint256 y) internal pure returns (uint256) {\n // Optimize for when y equals 1.0, 2.0 or 4.0, as those are very simple to implement and occur often in 50/50\n // and 80/20 Weighted Pools\n if (y == ONE) {\n return x;\n } else if (y == TWO) {\n return mulUp(x, x);\n } else if (y == FOUR) {\n uint256 square = mulUp(x, x);\n return mulUp(square, square);\n } else {\n uint256 raw = LogExpMath.pow(x, y);\n uint256 maxError = add(mulUp(raw, MAX_POW_RELATIVE_ERROR), 1);\n\n return add(raw, maxError);\n }\n }\n\n /**\n * @dev Returns the complement of a value (1 - x), capped to 0 if x is larger than 1.\n *\n * Useful when computing the complement for values with some level of relative error, as it strips this error and\n * prevents intermediate negative values.\n */\n function complement(uint256 x) internal pure returns (uint256) {\n return (x < ONE) ? (ONE - x) : 0;\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n// solhint-disable-next-line max-line-length\n// Based on https://github.com/lidofinance/lido-dao/blob/816bf1d0995ba5cfdfc264de4acda34a7fe93eba/contracts/0.4.24/Lido.sol\n\ninterface IstETH is IERC20 {\n function submit(address referral) external payable returns (uint256);\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n// documentation files (the “Software”), to deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the\n// Software.\n\n// THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE\n// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/* solhint-disable */\n\n/**\n * @dev Exponentiation and logarithm functions for 18 decimal fixed point numbers (both base and exponent/argument).\n *\n * Exponentiation and logarithm with arbitrary bases (x^y and log_x(y)) are implemented by conversion to natural\n * exponentiation and logarithm (where the base is Euler's number).\n *\n * @author Fernando Martinelli - @fernandomartinelli\n * @author Sergio Yuhjtman - @sergioyuhjtman\n * @author Daniel Fernandez - @dmf7z\n */\nlibrary LogExpMath {\n // All fixed point multiplications and divisions are inlined. This means we need to divide by ONE when multiplying\n // two numbers, and multiply by ONE when dividing them.\n\n // All arguments and return values are 18 decimal fixed point numbers.\n int256 constant ONE_18 = 1e18;\n\n // Internally, intermediate values are computed with higher precision as 20 decimal fixed point numbers, and in the\n // case of ln36, 36 decimals.\n int256 constant ONE_20 = 1e20;\n int256 constant ONE_36 = 1e36;\n\n // The domain of natural exponentiation is bound by the word size and number of decimals used.\n //\n // Because internally the result will be stored using 20 decimals, the largest possible result is\n // (2^255 - 1) / 10^20, which makes the largest exponent ln((2^255 - 1) / 10^20) = 130.700829182905140221.\n // The smallest possible result is 10^(-18), which makes largest negative argument\n // ln(10^(-18)) = -41.446531673892822312.\n // We use 130.0 and -41.0 to have some safety margin.\n int256 constant MAX_NATURAL_EXPONENT = 130e18;\n int256 constant MIN_NATURAL_EXPONENT = -41e18;\n\n // Bounds for ln_36's argument. Both ln(0.9) and ln(1.1) can be represented with 36 decimal places in a fixed point\n // 256 bit integer.\n int256 constant LN_36_LOWER_BOUND = ONE_18 - 1e17;\n int256 constant LN_36_UPPER_BOUND = ONE_18 + 1e17;\n\n uint256 constant MILD_EXPONENT_BOUND = 2**254 / uint256(ONE_20);\n\n // 18 decimal constants\n int256 constant x0 = 128000000000000000000; // 2ˆ7\n int256 constant a0 = 38877084059945950922200000000000000000000000000000000000; // eˆ(x0) (no decimals)\n int256 constant x1 = 64000000000000000000; // 2ˆ6\n int256 constant a1 = 6235149080811616882910000000; // eˆ(x1) (no decimals)\n\n // 20 decimal constants\n int256 constant x2 = 3200000000000000000000; // 2ˆ5\n int256 constant a2 = 7896296018268069516100000000000000; // eˆ(x2)\n int256 constant x3 = 1600000000000000000000; // 2ˆ4\n int256 constant a3 = 888611052050787263676000000; // eˆ(x3)\n int256 constant x4 = 800000000000000000000; // 2ˆ3\n int256 constant a4 = 298095798704172827474000; // eˆ(x4)\n int256 constant x5 = 400000000000000000000; // 2ˆ2\n int256 constant a5 = 5459815003314423907810; // eˆ(x5)\n int256 constant x6 = 200000000000000000000; // 2ˆ1\n int256 constant a6 = 738905609893065022723; // eˆ(x6)\n int256 constant x7 = 100000000000000000000; // 2ˆ0\n int256 constant a7 = 271828182845904523536; // eˆ(x7)\n int256 constant x8 = 50000000000000000000; // 2ˆ-1\n int256 constant a8 = 164872127070012814685; // eˆ(x8)\n int256 constant x9 = 25000000000000000000; // 2ˆ-2\n int256 constant a9 = 128402541668774148407; // eˆ(x9)\n int256 constant x10 = 12500000000000000000; // 2ˆ-3\n int256 constant a10 = 113314845306682631683; // eˆ(x10)\n int256 constant x11 = 6250000000000000000; // 2ˆ-4\n int256 constant a11 = 106449445891785942956; // eˆ(x11)\n\n /**\n * @dev Exponentiation (x^y) with unsigned 18 decimal fixed point base and exponent.\n *\n * Reverts if ln(x) * y is smaller than `MIN_NATURAL_EXPONENT`, or larger than `MAX_NATURAL_EXPONENT`.\n */\n function pow(uint256 x, uint256 y) internal pure returns (uint256) {\n if (y == 0) {\n // We solve the 0^0 indetermination by making it equal one.\n return uint256(ONE_18);\n }\n\n if (x == 0) {\n return 0;\n }\n\n // Instead of computing x^y directly, we instead rely on the properties of logarithms and exponentiation to\n // arrive at that result. In particular, exp(ln(x)) = x, and ln(x^y) = y * ln(x). This means\n // x^y = exp(y * ln(x)).\n\n // The ln function takes a signed value, so we need to make sure x fits in the signed 256 bit range.\n _require(x >> 255 == 0, Errors.X_OUT_OF_BOUNDS);\n int256 x_int256 = int256(x);\n\n // We will compute y * ln(x) in a single step. Depending on the value of x, we can either use ln or ln_36. In\n // both cases, we leave the division by ONE_18 (due to fixed point multiplication) to the end.\n\n // This prevents y * ln(x) from overflowing, and at the same time guarantees y fits in the signed 256 bit range.\n _require(y < MILD_EXPONENT_BOUND, Errors.Y_OUT_OF_BOUNDS);\n int256 y_int256 = int256(y);\n\n int256 logx_times_y;\n if (LN_36_LOWER_BOUND < x_int256 && x_int256 < LN_36_UPPER_BOUND) {\n int256 ln_36_x = _ln_36(x_int256);\n\n // ln_36_x has 36 decimal places, so multiplying by y_int256 isn't as straightforward, since we can't just\n // bring y_int256 to 36 decimal places, as it might overflow. Instead, we perform two 18 decimal\n // multiplications and add the results: one with the first 18 decimals of ln_36_x, and one with the\n // (downscaled) last 18 decimals.\n logx_times_y = ((ln_36_x / ONE_18) * y_int256 + ((ln_36_x % ONE_18) * y_int256) / ONE_18);\n } else {\n logx_times_y = _ln(x_int256) * y_int256;\n }\n logx_times_y /= ONE_18;\n\n // Finally, we compute exp(y * ln(x)) to arrive at x^y\n _require(\n MIN_NATURAL_EXPONENT <= logx_times_y && logx_times_y <= MAX_NATURAL_EXPONENT,\n Errors.PRODUCT_OUT_OF_BOUNDS\n );\n\n return uint256(exp(logx_times_y));\n }\n\n /**\n * @dev Natural exponentiation (e^x) with signed 18 decimal fixed point exponent.\n *\n * Reverts if `x` is smaller than MIN_NATURAL_EXPONENT, or larger than `MAX_NATURAL_EXPONENT`.\n */\n function exp(int256 x) internal pure returns (int256) {\n _require(x >= MIN_NATURAL_EXPONENT && x <= MAX_NATURAL_EXPONENT, Errors.INVALID_EXPONENT);\n\n if (x < 0) {\n // We only handle positive exponents: e^(-x) is computed as 1 / e^x. We can safely make x positive since it\n // fits in the signed 256 bit range (as it is larger than MIN_NATURAL_EXPONENT).\n // Fixed point division requires multiplying by ONE_18.\n return ((ONE_18 * ONE_18) / exp(-x));\n }\n\n // First, we use the fact that e^(x+y) = e^x * e^y to decompose x into a sum of powers of two, which we call x_n,\n // where x_n == 2^(7 - n), and e^x_n = a_n has been precomputed. We choose the first x_n, x0, to equal 2^7\n // because all larger powers are larger than MAX_NATURAL_EXPONENT, and therefore not present in the\n // decomposition.\n // At the end of this process we will have the product of all e^x_n = a_n that apply, and the remainder of this\n // decomposition, which will be lower than the smallest x_n.\n // exp(x) = k_0 * a_0 * k_1 * a_1 * ... + k_n * a_n * exp(remainder), where each k_n equals either 0 or 1.\n // We mutate x by subtracting x_n, making it the remainder of the decomposition.\n\n // The first two a_n (e^(2^7) and e^(2^6)) are too large if stored as 18 decimal numbers, and could cause\n // intermediate overflows. Instead we store them as plain integers, with 0 decimals.\n // Additionally, x0 + x1 is larger than MAX_NATURAL_EXPONENT, which means they will not both be present in the\n // decomposition.\n\n // For each x_n, we test if that term is present in the decomposition (if x is larger than it), and if so deduct\n // it and compute the accumulated product.\n\n int256 firstAN;\n if (x >= x0) {\n x -= x0;\n firstAN = a0;\n } else if (x >= x1) {\n x -= x1;\n firstAN = a1;\n } else {\n firstAN = 1; // One with no decimal places\n }\n\n // We now transform x into a 20 decimal fixed point number, to have enhanced precision when computing the\n // smaller terms.\n x *= 100;\n\n // `product` is the accumulated product of all a_n (except a0 and a1), which starts at 20 decimal fixed point\n // one. Recall that fixed point multiplication requires dividing by ONE_20.\n int256 product = ONE_20;\n\n if (x >= x2) {\n x -= x2;\n product = (product * a2) / ONE_20;\n }\n if (x >= x3) {\n x -= x3;\n product = (product * a3) / ONE_20;\n }\n if (x >= x4) {\n x -= x4;\n product = (product * a4) / ONE_20;\n }\n if (x >= x5) {\n x -= x5;\n product = (product * a5) / ONE_20;\n }\n if (x >= x6) {\n x -= x6;\n product = (product * a6) / ONE_20;\n }\n if (x >= x7) {\n x -= x7;\n product = (product * a7) / ONE_20;\n }\n if (x >= x8) {\n x -= x8;\n product = (product * a8) / ONE_20;\n }\n if (x >= x9) {\n x -= x9;\n product = (product * a9) / ONE_20;\n }\n\n // x10 and x11 are unnecessary here since we have high enough precision already.\n\n // Now we need to compute e^x, where x is small (in particular, it is smaller than x9). We use the Taylor series\n // expansion for e^x: 1 + x + (x^2 / 2!) + (x^3 / 3!) + ... + (x^n / n!).\n\n int256 seriesSum = ONE_20; // The initial one in the sum, with 20 decimal places.\n int256 term; // Each term in the sum, where the nth term is (x^n / n!).\n\n // The first term is simply x.\n term = x;\n seriesSum += term;\n\n // Each term (x^n / n!) equals the previous one times x, divided by n. Since x is a fixed point number,\n // multiplying by it requires dividing by ONE_20, but dividing by the non-fixed point n values does not.\n\n term = ((term * x) / ONE_20) / 2;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 3;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 4;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 5;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 6;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 7;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 8;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 9;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 10;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 11;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 12;\n seriesSum += term;\n\n // 12 Taylor terms are sufficient for 18 decimal precision.\n\n // We now have the first a_n (with no decimals), and the product of all other a_n present, and the Taylor\n // approximation of the exponentiation of the remainder (both with 20 decimals). All that remains is to multiply\n // all three (one 20 decimal fixed point multiplication, dividing by ONE_20, and one integer multiplication),\n // and then drop two digits to return an 18 decimal value.\n\n return (((product * seriesSum) / ONE_20) * firstAN) / 100;\n }\n\n /**\n * @dev Logarithm (log(arg, base), with signed 18 decimal fixed point base and argument.\n */\n function log(int256 arg, int256 base) internal pure returns (int256) {\n // This performs a simple base change: log(arg, base) = ln(arg) / ln(base).\n\n // Both logBase and logArg are computed as 36 decimal fixed point numbers, either by using ln_36, or by\n // upscaling.\n\n int256 logBase;\n if (LN_36_LOWER_BOUND < base && base < LN_36_UPPER_BOUND) {\n logBase = _ln_36(base);\n } else {\n logBase = _ln(base) * ONE_18;\n }\n\n int256 logArg;\n if (LN_36_LOWER_BOUND < arg && arg < LN_36_UPPER_BOUND) {\n logArg = _ln_36(arg);\n } else {\n logArg = _ln(arg) * ONE_18;\n }\n\n // When dividing, we multiply by ONE_18 to arrive at a result with 18 decimal places\n return (logArg * ONE_18) / logBase;\n }\n\n /**\n * @dev Natural logarithm (ln(a)) with signed 18 decimal fixed point argument.\n */\n function ln(int256 a) internal pure returns (int256) {\n // The real natural logarithm is not defined for negative numbers or zero.\n _require(a > 0, Errors.OUT_OF_BOUNDS);\n if (LN_36_LOWER_BOUND < a && a < LN_36_UPPER_BOUND) {\n return _ln_36(a) / ONE_18;\n } else {\n return _ln(a);\n }\n }\n\n /**\n * @dev Internal natural logarithm (ln(a)) with signed 18 decimal fixed point argument.\n */\n function _ln(int256 a) private pure returns (int256) {\n if (a < ONE_18) {\n // Since ln(a^k) = k * ln(a), we can compute ln(a) as ln(a) = ln((1/a)^(-1)) = - ln((1/a)). If a is less\n // than one, 1/a will be greater than one, and this if statement will not be entered in the recursive call.\n // Fixed point division requires multiplying by ONE_18.\n return (-_ln((ONE_18 * ONE_18) / a));\n }\n\n // First, we use the fact that ln^(a * b) = ln(a) + ln(b) to decompose ln(a) into a sum of powers of two, which\n // we call x_n, where x_n == 2^(7 - n), which are the natural logarithm of precomputed quantities a_n (that is,\n // ln(a_n) = x_n). We choose the first x_n, x0, to equal 2^7 because the exponential of all larger powers cannot\n // be represented as 18 fixed point decimal numbers in 256 bits, and are therefore larger than a.\n // At the end of this process we will have the sum of all x_n = ln(a_n) that apply, and the remainder of this\n // decomposition, which will be lower than the smallest a_n.\n // ln(a) = k_0 * x_0 + k_1 * x_1 + ... + k_n * x_n + ln(remainder), where each k_n equals either 0 or 1.\n // We mutate a by subtracting a_n, making it the remainder of the decomposition.\n\n // For reasons related to how `exp` works, the first two a_n (e^(2^7) and e^(2^6)) are not stored as fixed point\n // numbers with 18 decimals, but instead as plain integers with 0 decimals, so we need to multiply them by\n // ONE_18 to convert them to fixed point.\n // For each a_n, we test if that term is present in the decomposition (if a is larger than it), and if so divide\n // by it and compute the accumulated sum.\n\n int256 sum = 0;\n if (a >= a0 * ONE_18) {\n a /= a0; // Integer, not fixed point division\n sum += x0;\n }\n\n if (a >= a1 * ONE_18) {\n a /= a1; // Integer, not fixed point division\n sum += x1;\n }\n\n // All other a_n and x_n are stored as 20 digit fixed point numbers, so we convert the sum and a to this format.\n sum *= 100;\n a *= 100;\n\n // Because further a_n are 20 digit fixed point numbers, we multiply by ONE_20 when dividing by them.\n\n if (a >= a2) {\n a = (a * ONE_20) / a2;\n sum += x2;\n }\n\n if (a >= a3) {\n a = (a * ONE_20) / a3;\n sum += x3;\n }\n\n if (a >= a4) {\n a = (a * ONE_20) / a4;\n sum += x4;\n }\n\n if (a >= a5) {\n a = (a * ONE_20) / a5;\n sum += x5;\n }\n\n if (a >= a6) {\n a = (a * ONE_20) / a6;\n sum += x6;\n }\n\n if (a >= a7) {\n a = (a * ONE_20) / a7;\n sum += x7;\n }\n\n if (a >= a8) {\n a = (a * ONE_20) / a8;\n sum += x8;\n }\n\n if (a >= a9) {\n a = (a * ONE_20) / a9;\n sum += x9;\n }\n\n if (a >= a10) {\n a = (a * ONE_20) / a10;\n sum += x10;\n }\n\n if (a >= a11) {\n a = (a * ONE_20) / a11;\n sum += x11;\n }\n\n // a is now a small number (smaller than a_11, which roughly equals 1.06). This means we can use a Taylor series\n // that converges rapidly for values of `a` close to one - the same one used in ln_36.\n // Let z = (a - 1) / (a + 1).\n // ln(a) = 2 * (z + z^3 / 3 + z^5 / 5 + z^7 / 7 + ... + z^(2 * n + 1) / (2 * n + 1))\n\n // Recall that 20 digit fixed point division requires multiplying by ONE_20, and multiplication requires\n // division by ONE_20.\n int256 z = ((a - ONE_20) * ONE_20) / (a + ONE_20);\n int256 z_squared = (z * z) / ONE_20;\n\n // num is the numerator of the series: the z^(2 * n + 1) term\n int256 num = z;\n\n // seriesSum holds the accumulated sum of each term in the series, starting with the initial z\n int256 seriesSum = num;\n\n // In each step, the numerator is multiplied by z^2\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 3;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 5;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 7;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 9;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 11;\n\n // 6 Taylor terms are sufficient for 36 decimal precision.\n\n // Finally, we multiply by 2 (non fixed point) to compute ln(remainder)\n seriesSum *= 2;\n\n // We now have the sum of all x_n present, and the Taylor approximation of the logarithm of the remainder (both\n // with 20 decimals). All that remains is to sum these two, and then drop two digits to return a 18 decimal\n // value.\n\n return (sum + seriesSum) / 100;\n }\n\n /**\n * @dev Intrnal high precision (36 decimal places) natural logarithm (ln(x)) with signed 18 decimal fixed point argument,\n * for x close to one.\n *\n * Should only be used if x is between LN_36_LOWER_BOUND and LN_36_UPPER_BOUND.\n */\n function _ln_36(int256 x) private pure returns (int256) {\n // Since ln(1) = 0, a value of x close to one will yield a very small result, which makes using 36 digits\n // worthwhile.\n\n // First, we transform x to a 36 digit fixed point value.\n x *= ONE_18;\n\n // We will use the following Taylor expansion, which converges very rapidly. Let z = (x - 1) / (x + 1).\n // ln(x) = 2 * (z + z^3 / 3 + z^5 / 5 + z^7 / 7 + ... + z^(2 * n + 1) / (2 * n + 1))\n\n // Recall that 36 digit fixed point division requires multiplying by ONE_36, and multiplication requires\n // division by ONE_36.\n int256 z = ((x - ONE_36) * ONE_36) / (x + ONE_36);\n int256 z_squared = (z * z) / ONE_36;\n\n // num is the numerator of the series: the z^(2 * n + 1) term\n int256 num = z;\n\n // seriesSum holds the accumulated sum of each term in the series, starting with the initial z\n int256 seriesSum = num;\n\n // In each step, the numerator is multiplied by z^2\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 3;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 5;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 7;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 9;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 11;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 13;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 15;\n\n // 8 Taylor terms are sufficient for 36 decimal precision.\n\n // All that remains is multiplying by 2 (non fixed point).\n return seriesSum * 2;\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IstETH.sol\";\n\n// solhint-disable-next-line max-line-length\n// Based on https://github.com/lidofinance/lido-dao/blob/2b46615a11dee77d4d22066f942f6c6afab9b87a/contracts/0.6.12/WstETH.sol\n\n/**\n * @title StETH token wrapper with static balances.\n * @dev It's an ERC20 token that represents the account's share of the total\n * supply of stETH tokens. WstETH token's balance only changes on transfers,\n * unlike StETH that is also changed when oracles report staking rewards and\n * penalties. It's a \"power user\" token for DeFi protocols which don't\n * support rebasable tokens.\n *\n * The contract is also a trustless wrapper that accepts stETH tokens and mints\n * wstETH in return. Then the user unwraps, the contract burns user's wstETH\n * and sends user locked stETH in return.\n *\n * The contract provides the staking shortcut: user can send ETH with regular\n * transfer and get wstETH in return. The contract will send ETH to Lido submit\n * method, staking it and wrapping the received stETH.\n *\n */\ninterface IwstETH is IERC20 {\n function stETH() external returns (IstETH);\n\n /**\n * @notice Exchanges stETH to wstETH\n * @param _stETHAmount amount of stETH to wrap in exchange for wstETH\n * @dev Requirements:\n * - `_stETHAmount` must be non-zero\n * - msg.sender must approve at least `_stETHAmount` stETH to this\n * contract.\n * - msg.sender must have at least `_stETHAmount` of stETH.\n * User should first approve _stETHAmount to the WstETH contract\n * @return Amount of wstETH user receives after wrap\n */\n function wrap(uint256 _stETHAmount) external returns (uint256);\n\n /**\n * @notice Exchanges wstETH to stETH\n * @param _wstETHAmount amount of wstETH to uwrap in exchange for stETH\n * @dev Requirements:\n * - `_wstETHAmount` must be non-zero\n * - msg.sender must have at least `_wstETHAmount` wstETH.\n * @return Amount of stETH user receives after unwrap\n */\n function unwrap(uint256 _wstETHAmount) external returns (uint256);\n\n /**\n * @notice Get amount of wstETH for a given amount of stETH\n * @param _stETHAmount amount of stETH\n * @return Amount of wstETH for a given stETH amount\n */\n function getWstETHByStETH(uint256 _stETHAmount) external view returns (uint256);\n\n /**\n * @notice Get amount of stETH for a given amount of wstETH\n * @param _wstETHAmount amount of wstETH\n * @return Amount of stETH for a given wstETH amount\n */\n function getStETHByWstETH(uint256 _wstETHAmount) external view returns (uint256);\n\n /**\n * @notice Get amount of wstETH for a one stETH\n * @return Amount of stETH for 1 wstETH\n */\n function stEthPerToken() external view returns (uint256);\n\n /**\n * @notice Get amount of stETH for a one wstETH\n * @return Amount of wstETH for a 1 stETH\n */\n function tokensPerStEth() external view returns (uint256);\n}\n"},"contracts/test/MockWstETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\";\n\ncontract MockWstETH is ERC20, IwstETH {\n using FixedPoint for uint256;\n\n IstETH public override stETH;\n uint256 public rate = 1.5e18;\n\n constructor(IstETH token) ERC20(\"Wrapped Staked Ether\", \"wstETH\") {\n stETH = token;\n }\n\n function wrap(uint256 _stETHAmount) external override returns (uint256) {\n stETH.transferFrom(msg.sender, address(this), _stETHAmount);\n uint256 wstETHAmount = getWstETHByStETH(_stETHAmount);\n _mint(msg.sender, wstETHAmount);\n return wstETHAmount;\n }\n\n function unwrap(uint256 _wstETHAmount) external override returns (uint256) {\n _burn(msg.sender, _wstETHAmount);\n uint256 stETHAmount = getStETHByWstETH(_wstETHAmount);\n stETH.transfer(msg.sender, stETHAmount);\n return stETHAmount;\n }\n\n receive() external payable {\n stETH.submit{ value: msg.value }(address(this));\n _mint(msg.sender, getWstETHByStETH(msg.value));\n }\n\n function getWstETHByStETH(uint256 _stETHAmount) public view override returns (uint256) {\n return _stETHAmount.divDown(rate);\n }\n\n function getStETHByWstETH(uint256 _wstETHAmount) public view override returns (uint256) {\n return _wstETHAmount.mulDown(rate);\n }\n\n function stEthPerToken() external view override returns (uint256) {\n return getStETHByWstETH(1 ether);\n }\n\n function tokensPerStEth() external view override returns (uint256) {\n return getWstETHByStETH(1 ether);\n }\n}\n"},"contracts/relayer/LidoWrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title LidoWrapping\n * @notice Allows users to wrap and unwrap stETH\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract LidoWrapping is IBaseRelayerLibrary {\n using Address for address payable;\n\n IstETH private immutable _stETH;\n IwstETH private immutable _wstETH;\n\n /**\n * @dev The zero address may be passed as wstETH to safely disable this module\n * @param wstETH - the address of Lido's wrapped stETH contract\n */\n constructor(IERC20 wstETH) {\n // Safely disable stETH wrapping if no address has been passed for wstETH\n _stETH = wstETH != IERC20(0) ? IwstETH(address(wstETH)).stETH() : IstETH(0);\n _wstETH = IwstETH(address(wstETH));\n }\n\n function wrapStETH(\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // The wrap caller is the implicit token sender, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, _stETH, amount);\n }\n\n _stETH.approve(address(_wstETH), amount);\n uint256 result = IwstETH(_wstETH).wrap(amount);\n\n if (recipient != address(this)) {\n _wstETH.transfer(recipient, result);\n }\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n\n function unwrapWstETH(\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // The unwrap caller is the implicit token sender, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, _wstETH, amount);\n }\n\n // No approval is needed here, as wstETH is burned directly from the relayer's account\n uint256 result = _wstETH.unwrap(amount);\n\n if (recipient != address(this)) {\n _stETH.transfer(recipient, result);\n }\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n\n function stakeETH(\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n uint256 result = _stETH.submit{ value: amount }(address(this));\n\n if (recipient != address(this)) {\n _stETH.transfer(recipient, result);\n }\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n\n function stakeETHAndWrap(\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // We must query this separately, since the wstETH contract doesn't return how much wstETH is minted.\n uint256 result = _wstETH.getWstETHByStETH(amount);\n\n // The fallback function on the wstETH contract automatically stakes and wraps any ETH sent to it.\n // We can then send the ETH safely, and only have to ensure that the call doesn't revert.\n //\n // This would be dangerous if `_wstETH` were set to the zero address. However, in this scenario,\n // this function would have already reverted during the call to `getWstETHByStETH`, preventing loss of funds.\n payable(address(_wstETH)).sendValue(amount);\n\n if (recipient != address(this)) {\n _wstETH.transfer(recipient, result);\n }\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n}\n"},"contracts/relayer/VaultPermit.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title VaultPermit\n * @notice Allows users to use permit (where supported) to approve the Balancer Vault to use their tokens\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract VaultPermit is IBaseRelayerLibrary {\n function vaultPermit(\n IERC20Permit token,\n address owner,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public payable {\n token.permit(owner, address(getVault()), value, deadline, v, r, s);\n }\n\n function vaultPermitDAI(\n IERC20PermitDAI token,\n address holder,\n uint256 nonce,\n uint256 expiry,\n bool allowed,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public payable {\n token.permit(holder, address(getVault()), nonce, expiry, allowed, v, r, s);\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\ninterface IERC20PermitDAI {\n /**\n * @notice update allowance with a signed permit\n * @param holder Token owner's address (Authorizer)\n * @param spender Spender's address\n * @param nonce The permit nonce\n * @param expiry The time at which this expires (unix time)\n * @param allowed Whether the spender is allowed or disallowed from spending\n * @param v v of the signature\n * @param r r of the signature\n * @param s s of the signature\n */\n function permit(\n address holder,\n address spender,\n uint256 nonce,\n uint256 expiry,\n bool allowed,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n}\n"},"contracts/BatchRelayerLibrary.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"./relayer/BaseRelayerLibrary.sol\";\n\nimport \"./relayer/AaveWrapping.sol\";\nimport \"./relayer/ERC4626Wrapping.sol\";\nimport \"./relayer/GaugeActions.sol\";\nimport \"./relayer/LidoWrapping.sol\";\nimport \"./relayer/UnbuttonWrapping.sol\";\nimport \"./relayer/ReaperWrapping.sol\";\nimport \"./relayer/VaultActions.sol\";\nimport \"./relayer/VaultPermit.sol\";\n\n/**\n * @title Batch Relayer Library\n * @notice This contract is not a relayer by itself and calls into it directly will fail.\n * The associated relayer can be found by calling `getEntrypoint` on this contract.\n */\ncontract BatchRelayerLibrary is\n AaveWrapping,\n BaseRelayerLibrary,\n ERC4626Wrapping,\n GaugeActions,\n LidoWrapping,\n UnbuttonWrapping,\n ReaperWrapping,\n VaultActions,\n VaultPermit\n{\n constructor(\n IVault vault,\n IERC20 wstETH,\n IBalancerMinter minter\n ) BaseRelayerLibrary(vault) LidoWrapping(wstETH) GaugeActions(minter) {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n"},"contracts/relayer/BaseRelayerLibrary.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\nimport \"./BalancerRelayer.sol\";\n\n/**\n * @title Base Relayer Library\n * @notice Core functionality of a relayer. Allow users to use a signature to approve this contract\n * to take further actions on their behalf.\n * @dev\n * Relayers are composed of two contracts:\n * - A `BalancerRelayer` contract, which acts as a single point of entry into the system through a multicall function\n * - A library contract such as this one, which defines the allowed behaviour of the relayer\n\n * NOTE: Only the entrypoint contract should be allowlisted by Balancer governance as a relayer, so that the Vault\n * will reject calls from outside the entrypoint context.\n *\n * This contract should neither be allowlisted as a relayer, nor called directly by the user.\n * No guarantees can be made about fund safety when calling this contract in an improper manner.\n */\ncontract BaseRelayerLibrary is IBaseRelayerLibrary {\n using Address for address;\n\n IVault private immutable _vault;\n IBalancerRelayer private immutable _entrypoint;\n\n constructor(IVault vault) IBaseRelayerLibrary(vault.WETH()) {\n _vault = vault;\n _entrypoint = new BalancerRelayer(vault, address(this));\n }\n\n function getVault() public view override returns (IVault) {\n return _vault;\n }\n\n function getEntrypoint() public view returns (IBalancerRelayer) {\n return _entrypoint;\n }\n\n /**\n * @notice Sets whether a particular relayer is authorised to act on behalf of the user\n */\n function setRelayerApproval(\n address relayer,\n bool approved,\n bytes calldata authorisation\n ) external payable {\n require(relayer == address(this) || !approved, \"Relayer can only approve itself\");\n bytes memory data = abi.encodePacked(\n abi.encodeWithSelector(_vault.setRelayerApproval.selector, msg.sender, relayer, approved),\n authorisation\n );\n\n address(_vault).functionCall(data);\n }\n\n /**\n * @notice Approves the Vault to use tokens held in the relayer\n * @dev This is needed to avoid having to send intermediate tokens back to the user\n */\n function approveVault(IERC20 token, uint256 amount) public override {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n // TODO: gas golf this a bit\n token.approve(address(getVault()), amount);\n }\n\n /**\n * @notice Returns the amount referenced by chained reference `ref`.\n * @dev It does not alter the reference (even if it's marked as temporary).\n */\n function peekChainedReferenceValue(uint256 ref) public view override returns (uint256 value) {\n (, value) = _peekChainedReferenceValue(ref);\n }\n\n function _pullToken(\n address sender,\n IERC20 token,\n uint256 amount\n ) internal override {\n if (amount == 0) return;\n IERC20[] memory tokens = new IERC20[](1);\n tokens[0] = token;\n uint256[] memory amounts = new uint256[](1);\n amounts[0] = amount;\n\n _pullTokens(sender, tokens, amounts);\n }\n\n function _pullTokens(\n address sender,\n IERC20[] memory tokens,\n uint256[] memory amounts\n ) internal override {\n IVault.UserBalanceOp[] memory ops = new IVault.UserBalanceOp[](tokens.length);\n for (uint256 i; i < tokens.length; i++) {\n ops[i] = IVault.UserBalanceOp({\n asset: IAsset(address(tokens[i])),\n amount: amounts[i],\n sender: sender,\n recipient: payable(address(this)),\n kind: IVault.UserBalanceOpKind.TRANSFER_EXTERNAL\n });\n }\n\n getVault().manageUserBalance(ops);\n }\n\n /**\n * @dev Returns true if `amount` is not actually an amount, but rather a chained reference.\n */\n function _isChainedReference(uint256 amount) internal pure override returns (bool) {\n // First 3 nibbles are enough to determine if it's a chained reference.\n return\n (amount & 0xfff0000000000000000000000000000000000000000000000000000000000000) ==\n 0xba10000000000000000000000000000000000000000000000000000000000000;\n }\n\n /**\n * @dev Returns true if `ref` is temporary reference, i.e. to be deleted after reading it.\n */\n function _isTemporaryChainedReference(uint256 amount) internal pure returns (bool) {\n // First 3 nibbles determine if it's a chained reference.\n // If the 4th nibble is 0 it is temporary; otherwise it is considered read-only.\n // In practice, we shall use '0xba11' for read-only references.\n return\n (amount & 0xffff000000000000000000000000000000000000000000000000000000000000) ==\n 0xba10000000000000000000000000000000000000000000000000000000000000;\n }\n\n /**\n * @dev Stores `value` as the amount referenced by chained reference `ref`.\n */\n function _setChainedReferenceValue(uint256 ref, uint256 value) internal override {\n bytes32 slot = _getStorageSlot(ref);\n\n // Since we do manual calculation of storage slots, it is easier (and cheaper) to rely on internal assembly to\n // access it.\n // solhint-disable-next-line no-inline-assembly\n assembly {\n sstore(slot, value)\n }\n }\n\n /**\n * @dev Returns the amount referenced by chained reference `ref`.\n * If the reference is temporary, it will be cleared after reading it, so they can each only be read once.\n * If the reference is not temporary (i.e. read-only), it will not be cleared after reading it\n * (see `_isTemporaryChainedReference` function).\n */\n function _getChainedReferenceValue(uint256 ref) internal override returns (uint256) {\n (bytes32 slot, uint256 value) = _peekChainedReferenceValue(ref);\n\n if (_isTemporaryChainedReference(ref)) {\n // solhint-disable-next-line no-inline-assembly\n assembly {\n sstore(slot, 0)\n }\n }\n return value;\n }\n\n /**\n * @dev Returns the storage slot for reference `ref` as well as the amount referenced by it.\n * It does not alter the reference (even if it's marked as temporary).\n */\n function _peekChainedReferenceValue(uint256 ref) private view returns (bytes32 slot, uint256 value) {\n slot = _getStorageSlot(ref);\n\n // Since we do manual calculation of storage slots, it is easier (and cheaper) to rely on internal assembly to\n // access it.\n // solhint-disable-next-line no-inline-assembly\n assembly {\n value := sload(slot)\n }\n }\n\n // solhint-disable-next-line var-name-mixedcase\n bytes32 private immutable _TEMP_STORAGE_SUFFIX = keccak256(\"balancer.base-relayer-library\");\n\n function _getStorageSlot(uint256 ref) private view returns (bytes32) {\n // This replicates the mechanism Solidity uses to allocate storage slots for mappings, but using a hash as the\n // mapping's storage slot, and subtracting 1 at the end. This should be more than enough to prevent collisions\n // with other state variables this or derived contracts might use.\n // See https://docs.soliditylang.org/en/v0.8.9/internals/layout_in_storage.html\n\n return bytes32(uint256(keccak256(abi.encodePacked(_removeReferencePrefix(ref), _TEMP_STORAGE_SUFFIX))) - 1);\n }\n\n /**\n * @dev Returns a reference without its prefix.\n * Use this function to calculate the storage slot so that it's the same for temporary and read-only references.\n */\n function _removeReferencePrefix(uint256 ref) private pure returns (uint256) {\n return (ref & 0x0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n }\n}\n"},"contracts/relayer/AaveWrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title AaveWrapping\n * @notice Allows users to wrap and unwrap Aave's aTokens into their StaticAToken wrappers\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract AaveWrapping is IBaseRelayerLibrary {\n using Address for address payable;\n\n function wrapAaveDynamicToken(\n IStaticATokenLM staticToken,\n address sender,\n address recipient,\n uint256 amount,\n bool fromUnderlying,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // Aave's StaticATokens allow wrapping either an aToken or the underlying asset.\n // We can query which token to pull and approve from the wrapper contract.\n IERC20 dynamicToken = fromUnderlying ? staticToken.ASSET() : staticToken.ATOKEN();\n\n // The wrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, dynamicToken, amount);\n }\n\n dynamicToken.approve(address(staticToken), amount);\n // Use 0 for the referral code\n uint256 result = staticToken.deposit(recipient, amount, 0, fromUnderlying);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n\n function unwrapAaveStaticToken(\n IStaticATokenLM staticToken,\n address sender,\n address recipient,\n uint256 amount,\n bool toUnderlying,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // The unwrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, staticToken, amount);\n }\n\n // No approval is needed here, as the Static Tokens are burned directly from the relayer's account\n (, uint256 result) = staticToken.withdraw(recipient, amount, toUnderlying);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n}\n"},"contracts/relayer/ERC4626Wrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title ERC4626Wrapping\n * @notice Allows users to wrap and unwrap ERC4626 tokens\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract ERC4626Wrapping is IBaseRelayerLibrary {\n using Address for address payable;\n\n function wrapERC4626(\n IERC4626 wrappedToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n IERC20 underlying = IERC20(wrappedToken.asset());\n\n // The wrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, underlying, amount);\n }\n\n underlying.approve(address(wrappedToken), amount);\n uint256 result = wrappedToken.deposit(amount, recipient);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n\n function unwrapERC4626(\n IERC4626 wrappedToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // The unwrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, wrappedToken, amount);\n }\n\n uint256 result = wrappedToken.redeem(amount, recipient, address(this));\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n}\n"},"contracts/relayer/UnbuttonWrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title UnbuttonWrapping\n * @author @aalavandhan1984 (eng@fragments.org)\n * @notice Allows users to wrap and unwrap any rebasing elastic balance token into a\n * a non-rebasing static balance version using the Unbutton wrapper.\n * @dev All functions must be payable so that it can be called as part of a multicall involving ETH.\n * The rebasing token to be wrapped is called the \"underlying\" token.\n * The wrapped non-rebasing token is called the \"wrapped\" token.\n * Learn more: https://github.com/buttonwood-protocol/button-wrappers/blob/main/contracts/UnbuttonToken.sol\n */\nabstract contract UnbuttonWrapping is IBaseRelayerLibrary {\n using Address for address payable;\n\n /// @param wrapperToken The address of the wrapper.\n /// @param sender The address of sender.\n /// @param sender The address of recepient.\n /// @param uAmount The underling token amount to be deposited into the wrapper.\n /// @param outputReference Chained output reference.\n function wrapUnbuttonToken(\n IUnbuttonToken wrapperToken,\n address sender,\n address recipient,\n uint256 uAmount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(uAmount)) {\n uAmount = _getChainedReferenceValue(uAmount);\n }\n\n IERC20 underlyingToken = IERC20(wrapperToken.underlying());\n\n // The wrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, underlyingToken, uAmount);\n }\n\n underlyingToken.approve(address(wrapperToken), uAmount);\n uint256 mintAmount = wrapperToken.depositFor(recipient, uAmount);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, mintAmount);\n }\n }\n\n /// @param wrapperToken The address of the wrapper.\n /// @param sender The address of sender.\n /// @param sender The address of recepient.\n /// @param amount The amount of wrapped tokens to be burnt for underlying tokens.\n /// @param outputReference Chained output reference.\n function unwrapUnbuttonToken(\n IUnbuttonToken wrapperToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // The wrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first them pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, wrapperToken, amount);\n }\n\n uint256 withdrawnUAmount = wrapperToken.burnTo(recipient, amount);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, withdrawnUAmount);\n }\n }\n}\n"},"contracts/relayer/ReaperWrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\n\nimport \"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title ReaperWrapping\n * @notice Allows users to wrap and unwrap Reapers's rfTokens into their underlying main tokens\n * @dev All functions must be payable so that it can be called as part of a multicall involving ETH\n */\nabstract contract ReaperWrapping is IBaseRelayerLibrary {\n using Address for address payable;\n\n function unwrapReaperVaultToken(\n IReaperTokenVault vaultToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // The unwrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, vaultToken, amount);\n }\n\n IERC20 underlyingToken = IERC20(vaultToken.token());\n\n // Burn the rf shares and receive the underlying token.\n vaultToken.withdraw(amount);\n\n // Determine the amount of underlying returned for the shares burned.\n uint256 withdrawnAmount = underlyingToken.balanceOf(address(this));\n\n // Send the shares to the recipient\n underlyingToken.transfer(recipient, withdrawnAmount);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, withdrawnAmount);\n }\n }\n\n function wrapReaperVaultToken(\n IReaperTokenVault vaultToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n IERC20 underlyingToken = IERC20(vaultToken.token());\n\n // The wrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, underlyingToken, amount);\n }\n\n // Approve the vault token to spend the amount specified in the wrap\n underlyingToken.approve(address(vaultToken), amount);\n\n // Deposit the tokens into the vault\n vaultToken.deposit(amount);\n\n // Determine the amount of shares gained from depositing\n uint256 sharesGained = vaultToken.balanceOf(address(this));\n\n // Send the shares to the recipient\n vaultToken.transfer(recipient, sharesGained);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, sharesGained);\n }\n }\n}\n"},"contracts/relayer/VaultActions.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title VaultActions\n * @notice Allows users to call the core functions on the Balancer Vault (swaps/joins/exits/user balance management)\n * @dev\n * Since the relayer is not expected to hold user funds, we expect the user to be the recipient of any token transfers\n * from the Vault.\n *\n * All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract VaultActions is IBaseRelayerLibrary {\n using Math for uint256;\n\n struct OutputReference {\n uint256 index;\n uint256 key;\n }\n\n function swap(\n IVault.SingleSwap memory singleSwap,\n IVault.FundManagement calldata funds,\n uint256 limit,\n uint256 deadline,\n uint256 value,\n uint256 outputReference\n ) external payable {\n require(funds.sender == msg.sender || funds.sender == address(this), \"Incorrect sender\");\n\n if (_isChainedReference(singleSwap.amount)) {\n singleSwap.amount = _getChainedReferenceValue(singleSwap.amount);\n }\n\n uint256 result = getVault().swap{ value: value }(singleSwap, funds, limit, deadline);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n\n function batchSwap(\n IVault.SwapKind kind,\n IVault.BatchSwapStep[] memory swaps,\n IAsset[] calldata assets,\n IVault.FundManagement calldata funds,\n int256[] calldata limits,\n uint256 deadline,\n uint256 value,\n OutputReference[] calldata outputReferences\n ) external payable {\n require(funds.sender == msg.sender || funds.sender == address(this), \"Incorrect sender\");\n\n for (uint256 i = 0; i < swaps.length; ++i) {\n uint256 amount = swaps[i].amount;\n if (_isChainedReference(amount)) {\n swaps[i].amount = _getChainedReferenceValue(amount);\n }\n }\n\n int256[] memory results = getVault().batchSwap{ value: value }(kind, swaps, assets, funds, limits, deadline);\n\n for (uint256 i = 0; i < outputReferences.length; ++i) {\n require(_isChainedReference(outputReferences[i].key), \"invalid chained reference\");\n\n // Batch swap return values are signed, as they are Vault deltas (positive values correspond to assets sent\n // to the Vault, and negative values are assets received from the Vault). To simplify the chained reference\n // value model, we simply store the absolute value.\n // This should be fine for most use cases, as the caller can reason about swap results via the `limits`\n // parameter.\n _setChainedReferenceValue(outputReferences[i].key, Math.abs(results[outputReferences[i].index]));\n }\n }\n\n function manageUserBalance(IVault.UserBalanceOp[] calldata ops, uint256 value) external payable {\n for (uint256 i = 0; i < ops.length; i++) {\n require(ops[i].sender == msg.sender || ops[i].sender == address(this), \"Incorrect sender\");\n }\n getVault().manageUserBalance{ value: value }(ops);\n }\n\n enum PoolKind { WEIGHTED }\n\n function joinPool(\n bytes32 poolId,\n PoolKind kind,\n address sender,\n address recipient,\n IVault.JoinPoolRequest memory request,\n uint256 value,\n uint256 outputReference\n ) external payable {\n require(sender == msg.sender || sender == address(this), \"Incorrect sender\");\n\n // The output of a join will be the Pool's token contract, typically known as BPT (Balancer Pool Tokens).\n // Since the Vault is unaware of this (BPT tokens are minted directly to the recipient), we manually\n // measure this balance increase: but only if an output reference is provided.\n IERC20 bpt = IERC20(VaultHelpers.toPoolAddress(poolId));\n uint256 maybeInitialRecipientBPT = _isChainedReference(outputReference) ? bpt.balanceOf(recipient) : 0;\n\n request.userData = _doJoinPoolChainedReferenceReplacements(kind, request.userData);\n\n getVault().joinPool{ value: value }(poolId, sender, recipient, request);\n\n if (_isChainedReference(outputReference)) {\n // In this context, `maybeInitialRecipientBPT` is guaranteed to have been initialized, so we can safely read\n // from it. Note that we assume the recipient balance change has a positive sign (i.e. the recipient\n // received BPT).\n uint256 finalRecipientBPT = bpt.balanceOf(recipient);\n _setChainedReferenceValue(outputReference, finalRecipientBPT.sub(maybeInitialRecipientBPT));\n }\n }\n\n function _doJoinPoolChainedReferenceReplacements(PoolKind kind, bytes memory userData)\n private\n returns (bytes memory)\n {\n if (kind == PoolKind.WEIGHTED) {\n return _doWeightedJoinChainedReferenceReplacements(userData);\n } else {\n _revert(Errors.UNHANDLED_JOIN_KIND);\n }\n }\n\n function _doWeightedJoinChainedReferenceReplacements(bytes memory userData) private returns (bytes memory) {\n WeightedPoolUserData.JoinKind kind = WeightedPoolUserData.joinKind(userData);\n\n if (kind == WeightedPoolUserData.JoinKind.EXACT_TOKENS_IN_FOR_BPT_OUT) {\n return _doWeightedExactTokensInForBPTOutReplacements(userData);\n } else {\n // All other join kinds are 'given out' (i.e the parameter is a BPT amount), so we don't do replacements for\n // those.\n return userData;\n }\n }\n\n function _doWeightedExactTokensInForBPTOutReplacements(bytes memory userData) private returns (bytes memory) {\n (uint256[] memory amountsIn, uint256 minBPTAmountOut) = WeightedPoolUserData.exactTokensInForBptOut(userData);\n\n bool replacedAmounts = false;\n for (uint256 i = 0; i < amountsIn.length; ++i) {\n uint256 amount = amountsIn[i];\n if (_isChainedReference(amount)) {\n amountsIn[i] = _getChainedReferenceValue(amount);\n replacedAmounts = true;\n }\n }\n\n // Save gas by only re-encoding the data if we actually performed a replacement\n return\n replacedAmounts\n ? abi.encode(WeightedPoolUserData.JoinKind.EXACT_TOKENS_IN_FOR_BPT_OUT, amountsIn, minBPTAmountOut)\n : userData;\n }\n\n function exitPool(\n bytes32 poolId,\n PoolKind kind,\n address sender,\n address payable recipient,\n IVault.ExitPoolRequest memory request,\n OutputReference[] calldata outputReferences\n ) external payable {\n require(sender == msg.sender || sender == address(this), \"Incorrect sender\");\n\n // To track the changes of internal balances, we need an array of token addresses.\n // We save this here to avoid having to recalculate after the exit.\n IERC20[] memory trackedTokens = new IERC20[](outputReferences.length);\n\n // Query initial balances for all tokens, and record them as chained references\n uint256[] memory initialRecipientBalances = new uint256[](outputReferences.length);\n for (uint256 i = 0; i < outputReferences.length; i++) {\n require(_isChainedReference(outputReferences[i].key), \"invalid chained reference\");\n\n IAsset asset = request.assets[outputReferences[i].index];\n if (request.toInternalBalance) {\n trackedTokens[i] = _asIERC20(asset);\n } else {\n initialRecipientBalances[i] = _isETH(asset) ? recipient.balance : _asIERC20(asset).balanceOf(recipient);\n }\n }\n if (request.toInternalBalance) {\n initialRecipientBalances = getVault().getInternalBalance(recipient, trackedTokens);\n }\n\n // Exit the Pool\n request.userData = _doExitPoolChainedReferenceReplacements(kind, request.userData);\n getVault().exitPool(poolId, sender, recipient, request);\n\n // Query final balances for all tokens of interest\n uint256[] memory finalRecipientTokenBalances = new uint256[](outputReferences.length);\n if (request.toInternalBalance) {\n finalRecipientTokenBalances = getVault().getInternalBalance(recipient, trackedTokens);\n } else {\n for (uint256 i = 0; i < outputReferences.length; i++) {\n IAsset asset = request.assets[outputReferences[i].index];\n finalRecipientTokenBalances[i] = _isETH(asset)\n ? recipient.balance\n : _asIERC20(asset).balanceOf(recipient);\n }\n }\n\n // Calculate deltas and save as chained references\n for (uint256 i = 0; i < outputReferences.length; i++) {\n _setChainedReferenceValue(\n outputReferences[i].key,\n finalRecipientTokenBalances[i].sub(initialRecipientBalances[i])\n );\n }\n }\n\n function _doExitPoolChainedReferenceReplacements(PoolKind kind, bytes memory userData)\n private\n returns (bytes memory)\n {\n if (kind == PoolKind.WEIGHTED) {\n return _doWeightedExitChainedReferenceReplacements(userData);\n } else {\n _revert(Errors.UNHANDLED_EXIT_KIND);\n }\n }\n\n function _doWeightedExitChainedReferenceReplacements(bytes memory userData) private returns (bytes memory) {\n WeightedPoolUserData.ExitKind kind = WeightedPoolUserData.exitKind(userData);\n\n if (kind == WeightedPoolUserData.ExitKind.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT) {\n return _doWeightedExactBptInForOneTokenOutReplacements(userData);\n } else if (kind == WeightedPoolUserData.ExitKind.EXACT_BPT_IN_FOR_TOKENS_OUT) {\n return _doWeightedExactBptInForTokensOutReplacements(userData);\n } else {\n // All other exit kinds are 'given out' (i.e the parameter is a token amount),\n // so we don't do replacements for those.\n return userData;\n }\n }\n\n function _doWeightedExactBptInForOneTokenOutReplacements(bytes memory userData) private returns (bytes memory) {\n (uint256 bptAmountIn, uint256 tokenIndex) = WeightedPoolUserData.exactBptInForTokenOut(userData);\n\n if (_isChainedReference(bptAmountIn)) {\n bptAmountIn = _getChainedReferenceValue(bptAmountIn);\n return abi.encode(WeightedPoolUserData.ExitKind.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT, bptAmountIn, tokenIndex);\n } else {\n // Save gas by only re-encoding the data if we actually performed a replacement\n return userData;\n }\n }\n\n function _doWeightedExactBptInForTokensOutReplacements(bytes memory userData) private returns (bytes memory) {\n uint256 bptAmountIn = WeightedPoolUserData.exactBptInForTokensOut(userData);\n\n if (_isChainedReference(bptAmountIn)) {\n bptAmountIn = _getChainedReferenceValue(bptAmountIn);\n return abi.encode(WeightedPoolUserData.ExitKind.EXACT_BPT_IN_FOR_TOKENS_OUT, bptAmountIn);\n } else {\n // Save gas by only re-encoding the data if we actually performed a replacement\n return userData;\n }\n }\n}\n"},"contracts/relayer/BalancerRelayer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\n\n/**\n * @title Balancer Relayer\n * @notice Allows safe multicall execution of a relayer's functions\n * @dev\n * Relayers are composed of two contracts:\n * - This contract, which acts as a single point of entry into the system through a multicall function.\n * - A library contract, which defines the allowed behaviour of the relayer.\n *\n * The relayer entrypoint can then repeatedly delegatecall into the library's code to perform actions.\n * We can then run combinations of the library contract's functions in the context of the relayer entrypoint,\n * without having to expose all these functions on the entrypoint contract itself. The multicall function is\n * then a single point of entry for all actions, so we can easily prevent reentrancy.\n *\n * This design gives much stronger reentrancy guarantees, as otherwise a malicious contract could reenter\n * the relayer through another function (which must allow reentrancy for multicall logic), and that would\n * potentially allow them to manipulate global state, resulting in loss of funds in some cases:\n * e.g., sweeping any leftover ETH that should have been refunded to the user.\n *\n * NOTE: Only the entrypoint contract should be allowlisted by Balancer governance as a relayer, so that the\n * Vault will reject calls from outside the context of the entrypoint: e.g., if a user mistakenly called directly\n * into the library contract.\n */\ncontract BalancerRelayer is IBalancerRelayer, ReentrancyGuard {\n using Address for address payable;\n using Address for address;\n\n IVault private immutable _vault;\n address private immutable _library;\n\n /**\n * @dev This contract is not meant to be deployed directly by an EOA, but rather during construction of a contract\n * derived from `BaseRelayerLibrary`, which will provide its own address as the relayer's library.\n */\n constructor(IVault vault, address libraryAddress) {\n _vault = vault;\n _library = libraryAddress;\n }\n\n receive() external payable {\n // Only accept ETH transfers from the Vault. This is expected to happen due to a swap/exit/withdrawal\n // with ETH as an output, should the relayer be listed as the recipient. This may also happen when\n // joining a pool, performing a swap, or if managing a user's balance uses less than the full ETH value\n // provided. Any excess ETH will be refunded to this contract, and then forwarded to the original sender.\n _require(msg.sender == address(_vault), Errors.ETH_TRANSFER);\n }\n\n function getVault() external view override returns (IVault) {\n return _vault;\n }\n\n function getLibrary() external view override returns (address) {\n return _library;\n }\n\n function multicall(bytes[] calldata data) external payable override nonReentrant returns (bytes[] memory results) {\n results = new bytes[](data.length);\n for (uint256 i = 0; i < data.length; i++) {\n results[i] = _library.functionDelegateCall(data[i]);\n }\n\n _refundETH();\n }\n\n function _refundETH() private {\n uint256 remainingEth = address(this).balance;\n if (remainingEth > 0) {\n msg.sender.sendValue(remainingEth);\n }\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../vault/IVault.sol\";\n\n/**\n * @title IBalancerRelayer\n * @notice Allows safe multicall execution of a relayer's functions\n */\ninterface IBalancerRelayer {\n function getLibrary() external view returns (address);\n\n function getVault() external view returns (IVault);\n\n function multicall(bytes[] calldata data) external payable returns (bytes[] memory results);\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the ReentrancyGuard library from OpenZeppelin Contracts, altered to reduce bytecode size.\n// Modifier code is inlined by the compiler, which causes its code to appear multiple times in the codebase. By using\n// private functions, we achieve the same end result with slightly higher runtime gas costs, but reduced bytecode size.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuard {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant _NOT_ENTERED = 1;\n uint256 private constant _ENTERED = 2;\n\n uint256 private _status;\n\n constructor() {\n _status = _NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and make it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n _enterNonReentrant();\n _;\n _exitNonReentrant();\n }\n\n function _enterNonReentrant() private {\n // On the first call to nonReentrant, _status will be _NOT_ENTERED\n _require(_status != _ENTERED, Errors.REENTRANCY);\n\n // Any calls to nonReentrant after this point will fail\n _status = _ENTERED;\n }\n\n function _exitNonReentrant() private {\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _status = _NOT_ENTERED;\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n// solhint-disable-next-line max-line-length\n// Based on https://github.com/aave/protocol-v2/blob/ac58fea62bb8afee23f66197e8bce6d79ecda292/contracts/interfaces/IStaticATokenLM.sol\n\ninterface IStaticATokenLM is IERC20 {\n struct SignatureParams {\n uint8 v;\n bytes32 r;\n bytes32 s;\n }\n\n /**\n * @notice Deposits `ASSET` in the Aave protocol and mints static aTokens to msg.sender\n * @param recipient The address that will receive the static aTokens\n * @param amount The amount of underlying `ASSET` to deposit (e.g. deposit of 100 USDC)\n * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n * 0 if the action is executed directly by the user, without any middle-man\n * @param fromUnderlying bool\n * - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n * - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n * @return uint256 The amount of StaticAToken minted, static balance\n **/\n function deposit(\n address recipient,\n uint256 amount,\n uint16 referralCode,\n bool fromUnderlying\n ) external returns (uint256);\n\n /**\n * @notice Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n * @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n * @param amount The amount to withdraw, in static balance of StaticAToken\n * @param toUnderlying bool\n * - `true` for the recipient to get underlying tokens (e.g. USDC)\n * - `false` for the recipient to get aTokens (e.g. aUSDC)\n * @return amountToBurn: StaticATokens burnt, static balance\n * @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance\n **/\n function withdraw(\n address recipient,\n uint256 amount,\n bool toUnderlying\n ) external returns (uint256, uint256);\n\n /**\n * @notice Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n * @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n * @param amount The amount to withdraw, in dynamic balance of aToken/underlying asset\n * @param toUnderlying bool\n * - `true` for the recipient to get underlying tokens (e.g. USDC)\n * - `false` for the recipient to get aTokens (e.g. aUSDC)\n * @return amountToBurn: StaticATokens burnt, static balance\n * @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance\n **/\n function withdrawDynamicAmount(\n address recipient,\n uint256 amount,\n bool toUnderlying\n ) external returns (uint256, uint256);\n\n /**\n * @notice Implements the permit function as for\n * https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n * @param owner The owner of the funds\n * @param spender The spender\n * @param value The amount\n * @param deadline The deadline timestamp, type(uint256).max for max deadline\n * @param v Signature param\n * @param s Signature param\n * @param r Signature param\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @notice Allows to deposit on Aave via meta-transaction\n * https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n * @param depositor Address from which the funds to deposit are going to be pulled\n * @param recipient Address that will receive the staticATokens, in the average case, same as the `depositor`\n * @param value The amount to deposit\n * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n * 0 if the action is executed directly by the user, without any middle-man\n * @param fromUnderlying bool\n * - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n * - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n * @param deadline The deadline timestamp, type(uint256).max for max deadline\n * @param sigParams Signature params: v,r,s\n * @return uint256 The amount of StaticAToken minted, static balance\n */\n function metaDeposit(\n address depositor,\n address recipient,\n uint256 value,\n uint16 referralCode,\n bool fromUnderlying,\n uint256 deadline,\n SignatureParams calldata sigParams\n ) external returns (uint256);\n\n /**\n * @notice Allows to withdraw from Aave via meta-transaction\n * https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n * @param owner Address owning the staticATokens\n * @param recipient Address that will receive the underlying withdrawn from Aave\n * @param staticAmount The amount of staticAToken to withdraw. If > 0, `dynamicAmount` needs to be 0\n * @param dynamicAmount The amount of underlying/aToken to withdraw. If > 0, `staticAmount` needs to be 0\n * @param toUnderlying bool\n * - `true` for the recipient to get underlying tokens (e.g. USDC)\n * - `false` for the recipient to get aTokens (e.g. aUSDC)\n * @param deadline The deadline timestamp, type(uint256).max for max deadline\n * @param sigParams Signature params: v,r,s\n * @return amountToBurn: StaticATokens burnt, static balance\n * @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance\n */\n function metaWithdraw(\n address owner,\n address recipient,\n uint256 staticAmount,\n uint256 dynamicAmount,\n bool toUnderlying,\n uint256 deadline,\n SignatureParams calldata sigParams\n ) external returns (uint256, uint256);\n\n /**\n * @notice Utility method to get the current aToken balance of an user, from his staticAToken balance\n * @param account The address of the user\n * @return uint256 The aToken balance\n **/\n function dynamicBalanceOf(address account) external view returns (uint256);\n\n /**\n * @notice Converts a static amount (scaled balance on aToken) to the aToken/underlying value,\n * using the current liquidity index on Aave\n * @param amount The amount to convert from\n * @return uint256 The dynamic amount\n **/\n function staticToDynamicAmount(uint256 amount) external view returns (uint256);\n\n /**\n * @notice Converts an aToken or underlying amount to the what it is denominated on the aToken as\n * scaled balance, function of the principal and the liquidity index\n * @param amount The amount to convert from\n * @return uint256 The static (scaled) amount\n **/\n function dynamicToStaticAmount(uint256 amount) external view returns (uint256);\n\n /**\n * @notice Returns the Aave liquidity index of the underlying aToken, denominated rate here\n * as it can be considered as an ever-increasing exchange rate\n * @return The liquidity index\n **/\n function rate() external view returns (uint256);\n\n /**\n * @notice Function to return a dynamic domain separator, in order to be compatible with forks changing chainId\n * @return bytes32 The domain separator\n **/\n function getDomainSeparator() external view returns (bytes32);\n\n /**\n * @notice Claims rewards from `INCENTIVES_CONTROLLER` and updates internal accounting of rewards.\n */\n function collectAndUpdateRewards() external;\n\n /**\n * @notice Claim rewards on behalf of a user and send them to a receiver\n * @dev Only callable by if sender is onBehalfOf or sender is approved claimer\n * @param onBehalfOf The address to claim on behalf of\n * @param receiver The address to receive the rewards\n * @param forceUpdate Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`\n */\n function claimRewardsOnBehalf(\n address onBehalfOf,\n address receiver,\n bool forceUpdate\n ) external;\n\n /**\n * @notice Claim rewards and send them to a receiver\n * @param receiver The address to receive the rewards\n * @param forceUpdate Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`\n */\n function claimRewards(address receiver, bool forceUpdate) external;\n\n /**\n * @notice Claim rewards\n * @param forceUpdate Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`\n */\n function claimRewardsToSelf(bool forceUpdate) external;\n\n /**\n * @notice Get the total claimable rewards of the contract.\n * @return The current balance + pending rewards from the `_incentivesController`\n */\n function getTotalClaimableRewards() external view returns (uint256);\n\n /**\n * @notice Get the total claimable rewards for a user in WAD\n * @param user The address of the user\n * @return The claimable amount of rewards in WAD\n */\n function getClaimableRewards(address user) external view returns (uint256);\n\n /**\n * @notice The unclaimed rewards for a user in WAD\n * @param user The address of the user\n * @return The unclaimed amount of rewards in WAD\n */\n function getUnclaimedRewards(address user) external view returns (uint256);\n\n function getAccRewardsPerToken() external view returns (uint256);\n\n function getLifetimeRewardsClaimed() external view returns (uint256);\n\n function getLifetimeRewards() external view returns (uint256);\n\n function getLastRewardBlock() external view returns (uint256);\n\n // solhint-disable-next-line func-name-mixedcase\n function LENDING_POOL() external returns (address);\n\n // solhint-disable-next-line func-name-mixedcase\n function INCENTIVES_CONTROLLER() external returns (address);\n\n // solhint-disable-next-line func-name-mixedcase\n function ATOKEN() external returns (IERC20);\n\n // solhint-disable-next-line func-name-mixedcase\n function ASSET() external returns (IERC20);\n\n // solhint-disable-next-line func-name-mixedcase\n function REWARD_TOKEN() external returns (IERC20);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../openzeppelin/IERC20.sol\";\n\ninterface IERC4626 is IERC20 {\n /**\n * @dev `caller` has exchanged `assets` for `shares`, and transferred those `shares` to `owner`.\n */\n event Deposit(address indexed caller, address indexed owner, uint256 assets, uint256 shares);\n\n /**\n * @dev `caller` has exchanged `shares`, owned by `owner`, for `assets`,\n * and transferred those `assets` to `receiver`.\n */\n event Withdraw(\n address indexed caller,\n address indexed receiver,\n address indexed owner,\n uint256 assets,\n uint256 shares\n );\n\n /**\n * @dev Mints `shares` Vault shares to `receiver` by depositing exactly `amount` of underlying tokens.\n */\n function deposit(uint256 assets, address receiver) external returns (uint256 shares);\n\n /**\n * @dev Burns exactly `shares` from `owner` and sends `assets` of underlying tokens to `receiver`.\n */\n function redeem(\n uint256 shares,\n address receiver,\n address owner\n ) external returns (uint256 assets);\n\n /**\n * @dev The address of the underlying token that the Vault uses for accounting, depositing, and withdrawing.\n */\n function asset() external view returns (address);\n\n /**\n * @dev Total amount of the underlying asset that is “managed” by Vault.\n */\n function totalAssets() external view returns (uint256);\n\n /**\n * @dev The amount of `assets` that the Vault would exchange for the amount\n * of `shares` provided, in an ideal scenario where all the conditions are met.\n */\n function convertToAssets(uint256 shares) external view returns (uint256 assets);\n\n /**\n * @dev The amount of `shares` that the Vault would exchange for the amount\n * of `assets` provided, in an ideal scenario where all the conditions are met.\n */\n function convertToShares(uint256 assets) external view returns (uint256 shares);\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IButtonWrapper.sol\";\n\n// Balancer only supports ERC20 tokens, so we use this intermediate interface\n// to enforce ERC20-ness of UnbuttonTokens.\ninterface IUnbuttonToken is IButtonWrapper, IERC20 {\n // solhint-disable-previous-line no-empty-blocks\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\n// Source: https://github.com/buttonwood-protocol/button-wrappers/blob/main/contracts/interfaces/IButtonWrapper.sol\n// Interface definition for ButtonWrapper contract, which wraps an\n// underlying ERC20 token into a new ERC20 with different characteristics.\n// NOTE: \"uAmount\" => underlying token (wrapped) amount and\n// \"amount\" => wrapper token amount\ninterface IButtonWrapper {\n //--------------------------------------------------------------------------\n // ButtonWrapper write methods\n\n /// @notice Transfers underlying tokens from {msg.sender} to the contract and\n /// mints wrapper tokens.\n /// @param amount The amount of wrapper tokens to mint.\n /// @return The amount of underlying tokens deposited.\n function mint(uint256 amount) external returns (uint256);\n\n /// @notice Transfers underlying tokens from {msg.sender} to the contract and\n /// mints wrapper tokens to the specified beneficiary.\n /// @param to The beneficiary account.\n /// @param amount The amount of wrapper tokens to mint.\n /// @return The amount of underlying tokens deposited.\n function mintFor(address to, uint256 amount) external returns (uint256);\n\n /// @notice Burns wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back.\n /// @param amount The amount of wrapper tokens to burn.\n /// @return The amount of underlying tokens withdrawn.\n function burn(uint256 amount) external returns (uint256);\n\n /// @notice Burns wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens to the specified beneficiary.\n /// @param to The beneficiary account.\n /// @param amount The amount of wrapper tokens to burn.\n /// @return The amount of underlying tokens withdrawn.\n function burnTo(address to, uint256 amount) external returns (uint256);\n\n /// @notice Burns all wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back.\n /// @return The amount of underlying tokens withdrawn.\n function burnAll() external returns (uint256);\n\n /// @notice Burns all wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back.\n /// @param to The beneficiary account.\n /// @return The amount of underlying tokens withdrawn.\n function burnAllTo(address to) external returns (uint256);\n\n /// @notice Transfers underlying tokens from {msg.sender} to the contract and\n /// mints wrapper tokens to the specified beneficiary.\n /// @param uAmount The amount of underlying tokens to deposit.\n /// @return The amount of wrapper tokens mint.\n function deposit(uint256 uAmount) external returns (uint256);\n\n /// @notice Transfers underlying tokens from {msg.sender} to the contract and\n /// mints wrapper tokens to the specified beneficiary.\n /// @param to The beneficiary account.\n /// @param uAmount The amount of underlying tokens to deposit.\n /// @return The amount of wrapper tokens mint.\n function depositFor(address to, uint256 uAmount) external returns (uint256);\n\n /// @notice Burns wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back.\n /// @param uAmount The amount of underlying tokens to withdraw.\n /// @return The amount of wrapper tokens burnt.\n function withdraw(uint256 uAmount) external returns (uint256);\n\n /// @notice Burns wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back to the specified beneficiary.\n /// @param to The beneficiary account.\n /// @param uAmount The amount of underlying tokens to withdraw.\n /// @return The amount of wrapper tokens burnt.\n function withdrawTo(address to, uint256 uAmount) external returns (uint256);\n\n /// @notice Burns all wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back.\n /// @return The amount of wrapper tokens burnt.\n function withdrawAll() external returns (uint256);\n\n /// @notice Burns all wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back.\n /// @param to The beneficiary account.\n /// @return The amount of wrapper tokens burnt.\n function withdrawAllTo(address to) external returns (uint256);\n\n //--------------------------------------------------------------------------\n // ButtonWrapper view methods\n\n /// @return The address of the underlying token.\n function underlying() external view returns (address);\n\n /// @return The total underlying tokens held by the wrapper contract.\n function totalUnderlying() external view returns (uint256);\n\n /// @param who The account address.\n /// @return The underlying token balance of the account.\n function balanceOfUnderlying(address who) external view returns (uint256);\n\n /// @param uAmount The amount of underlying tokens.\n /// @return The amount of wrapper tokens exchangeable.\n function underlyingToWrapper(uint256 uAmount) external view returns (uint256);\n\n /// @param amount The amount of wrapper tokens.\n /// @return The amount of underlying tokens exchangeable.\n function wrapperToUnderlying(uint256 amount) external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n// Source: https://github.com/Byte-Masons/beet-strat/blob/master/contracts/ReaperVaultv1_4.sol\n// Interface definition for the ReaperTokenVault contract, a single strategy vault\n// for Reaper Farm crypts. The pricePerFullShare is always represented with 18 decimals,\n// regardless of the underlying token decimals.\n// ie: If ppfs === 1e18, 1 USDC === 0.000_000_000_001_000_000 rfUSDC\n// ie: If ppfs === 1e18, 1 DAI === 1 rfDAI\ninterface IReaperTokenVault is IERC20 {\n /**\n * @dev returns the address of the vault's underlying asset (mainToken)\n */\n function token() external view returns (address);\n\n /**\n * @dev returns the price for a single Vault share (ie rf-scfUSDT). The getPricePerFullShare is always in 1e18\n */\n function getPricePerFullShare() external view returns (uint256);\n\n /**\n * @notice Deposits `_amount` `token`, issuing shares to the caller.\n * If Panic is activated, deposits will not be accepted and this call will fail.\n * @param _amount The quantity of tokens to deposit.\n **/\n function deposit(uint256 _amount) external;\n\n /**\n * @notice Withdraws the calling account's tokens from this Vault,\n * redeeming amount `_shares` for an appropriate amount of tokens.\n **/\n function withdraw(uint256 _shares) external;\n\n /**\n * @dev returns the number of decimals for this vault token.\n * For reaper single-strat vaults, the decimals are fixed to 18.\n */\n function decimals() external view returns (uint8);\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nlibrary WeightedPoolUserData {\n // In order to preserve backwards compatibility, make sure new join and exit kinds are added at the end of the enum.\n enum JoinKind { INIT, EXACT_TOKENS_IN_FOR_BPT_OUT, TOKEN_IN_FOR_EXACT_BPT_OUT, ALL_TOKENS_IN_FOR_EXACT_BPT_OUT }\n enum ExitKind {\n EXACT_BPT_IN_FOR_ONE_TOKEN_OUT,\n EXACT_BPT_IN_FOR_TOKENS_OUT,\n BPT_IN_FOR_EXACT_TOKENS_OUT,\n REMOVE_TOKEN // for ManagedPool\n }\n\n function joinKind(bytes memory self) internal pure returns (JoinKind) {\n return abi.decode(self, (JoinKind));\n }\n\n function exitKind(bytes memory self) internal pure returns (ExitKind) {\n return abi.decode(self, (ExitKind));\n }\n\n // Joins\n\n function initialAmountsIn(bytes memory self) internal pure returns (uint256[] memory amountsIn) {\n (, amountsIn) = abi.decode(self, (JoinKind, uint256[]));\n }\n\n function exactTokensInForBptOut(bytes memory self)\n internal\n pure\n returns (uint256[] memory amountsIn, uint256 minBPTAmountOut)\n {\n (, amountsIn, minBPTAmountOut) = abi.decode(self, (JoinKind, uint256[], uint256));\n }\n\n function tokenInForExactBptOut(bytes memory self) internal pure returns (uint256 bptAmountOut, uint256 tokenIndex) {\n (, bptAmountOut, tokenIndex) = abi.decode(self, (JoinKind, uint256, uint256));\n }\n\n function allTokensInForExactBptOut(bytes memory self) internal pure returns (uint256 bptAmountOut) {\n (, bptAmountOut) = abi.decode(self, (JoinKind, uint256));\n }\n\n // Exits\n\n function exactBptInForTokenOut(bytes memory self) internal pure returns (uint256 bptAmountIn, uint256 tokenIndex) {\n (, bptAmountIn, tokenIndex) = abi.decode(self, (ExitKind, uint256, uint256));\n }\n\n function exactBptInForTokensOut(bytes memory self) internal pure returns (uint256 bptAmountIn) {\n (, bptAmountIn) = abi.decode(self, (ExitKind, uint256));\n }\n\n function bptInForExactTokensOut(bytes memory self)\n internal\n pure\n returns (uint256[] memory amountsOut, uint256 maxBPTAmountIn)\n {\n (, amountsOut, maxBPTAmountIn) = abi.decode(self, (ExitKind, uint256[], uint256));\n }\n\n // Managed Pool\n function removeToken(bytes memory self) internal pure returns (uint256 tokenIndex) {\n (, tokenIndex) = abi.decode(self, (ExitKind, uint256));\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\nlibrary InputHelpers {\n function ensureInputLengthMatch(uint256 a, uint256 b) internal pure {\n _require(a == b, Errors.INPUT_LENGTH_MISMATCH);\n }\n\n function ensureInputLengthMatch(\n uint256 a,\n uint256 b,\n uint256 c\n ) internal pure {\n _require(a == b && b == c, Errors.INPUT_LENGTH_MISMATCH);\n }\n\n function ensureArrayIsSorted(IERC20[] memory array) internal pure {\n address[] memory addressArray;\n // solhint-disable-next-line no-inline-assembly\n assembly {\n addressArray := array\n }\n ensureArrayIsSorted(addressArray);\n }\n\n function ensureArrayIsSorted(address[] memory array) internal pure {\n if (array.length < 2) {\n return;\n }\n\n address previous = array[0];\n for (uint256 i = 1; i < array.length; ++i) {\n address current = array[i];\n _require(previous < current, Errors.UNSORTED_ARRAY);\n previous = current;\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nlibrary VaultHelpers {\n /**\n * @dev Returns the address of a Pool's contract.\n *\n * This is the same code the Vault runs in `PoolRegistry._getPoolAddress`.\n */\n function toPoolAddress(bytes32 poolId) internal pure returns (address) {\n // 12 byte logical shift left to remove the nonce and specialization setting. We don't need to mask,\n // since the logical shift already sets the upper bits to zero.\n return address(uint256(poolId) >> (12 * 8));\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow checks.\n * Adapted from OpenZeppelin's SafeMath library.\n */\nlibrary Math {\n /**\n * @dev Returns the absolute value of a signed integer.\n */\n function abs(int256 a) internal pure returns (uint256) {\n return a > 0 ? uint256(a) : uint256(-a);\n }\n\n /**\n * @dev Returns the addition of two unsigned integers of 256 bits, reverting on overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n _require(c >= a, Errors.ADD_OVERFLOW);\n return c;\n }\n\n /**\n * @dev Returns the addition of two signed integers, reverting on overflow.\n */\n function add(int256 a, int256 b) internal pure returns (int256) {\n int256 c = a + b;\n _require((b >= 0 && c >= a) || (b < 0 && c < a), Errors.ADD_OVERFLOW);\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers of 256 bits, reverting on overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n _require(b <= a, Errors.SUB_OVERFLOW);\n uint256 c = a - b;\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two signed integers, reverting on overflow.\n */\n function sub(int256 a, int256 b) internal pure returns (int256) {\n int256 c = a - b;\n _require((b >= 0 && c <= a) || (b < 0 && c > a), Errors.SUB_OVERFLOW);\n return c;\n }\n\n /**\n * @dev Returns the largest of two numbers of 256 bits.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a >= b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers of 256 bits.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a * b;\n _require(a == 0 || c / a == b, Errors.MUL_OVERFLOW);\n return c;\n }\n\n function div(\n uint256 a,\n uint256 b,\n bool roundUp\n ) internal pure returns (uint256) {\n return roundUp ? divUp(a, b) : divDown(a, b);\n }\n\n function divDown(uint256 a, uint256 b) internal pure returns (uint256) {\n _require(b != 0, Errors.ZERO_DIVISION);\n return a / b;\n }\n\n function divUp(uint256 a, uint256 b) internal pure returns (uint256) {\n _require(b != 0, Errors.ZERO_DIVISION);\n\n if (a == 0) {\n return 0;\n } else {\n return 1 + (a - 1) / b;\n }\n }\n}\n"},"contracts/test/MockBatchRelayerLibrary.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../BatchRelayerLibrary.sol\";\n\ncontract MockBatchRelayerLibrary is BatchRelayerLibrary {\n event ChainedReferenceValueRead(uint256 value);\n\n constructor(\n IVault vault,\n IERC20 wstETH,\n IBalancerMinter minter\n ) BatchRelayerLibrary(vault, wstETH, minter) {}\n\n function setChainedReferenceValue(uint256 ref, uint256 value) public {\n _setChainedReferenceValue(ref, value);\n }\n\n function getChainedReferenceValue(uint256 ref) public {\n emit ChainedReferenceValueRead(_getChainedReferenceValue(ref));\n }\n}\n"},"contracts/BalancerQueries.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol\";\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol\";\n\nimport \"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\";\n\n/**\n * @dev This contract simply builds on top of the Balancer V2 architecture to provide useful helpers to users.\n * It connects different functionalities of the protocol components to allow accessing information that would\n * have required a more cumbersome setup if we wanted to provide these already built-in.\n */\ncontract BalancerQueries is IBalancerQueries, AssetHelpers {\n IVault public immutable vault;\n\n constructor(IVault _vault) AssetHelpers(_vault.WETH()) {\n vault = _vault;\n }\n\n function querySwap(IVault.SingleSwap memory singleSwap, IVault.FundManagement memory funds)\n external\n override\n returns (uint256)\n {\n // The Vault only supports batch swap queries, so we need to convert the swap call into an equivalent batch\n // swap. The result will be identical.\n\n // The main difference between swaps and batch swaps is that batch swaps require an assets array. We're going\n // to place the asset in at index 0, and asset out at index 1.\n IAsset[] memory assets = new IAsset[](2);\n assets[0] = singleSwap.assetIn;\n assets[1] = singleSwap.assetOut;\n\n IVault.BatchSwapStep[] memory swaps = new IVault.BatchSwapStep[](1);\n swaps[0] = IVault.BatchSwapStep({\n poolId: singleSwap.poolId,\n assetInIndex: 0,\n assetOutIndex: 1,\n amount: singleSwap.amount,\n userData: singleSwap.userData\n });\n\n int256[] memory assetDeltas = vault.queryBatchSwap(singleSwap.kind, swaps, assets, funds);\n\n // Batch swaps return the full Vault asset deltas, which in the special case of a single step swap contains more\n // information than we need (as the amount in is known in a GIVEN_IN swap, and the amount out is known in a\n // GIVEN_OUT swap). We extract the information we're interested in.\n if (singleSwap.kind == IVault.SwapKind.GIVEN_IN) {\n // The asset out will have a negative Vault delta (the assets are coming out of the Pool and the user is\n // receiving them), so make it positive to match the `swap` interface.\n\n _require(assetDeltas[1] <= 0, Errors.SHOULD_NOT_HAPPEN);\n return uint256(-assetDeltas[1]);\n } else {\n // The asset in will have a positive Vault delta (the assets are going into the Pool and the user is\n // sending them), so we don't need to do anything.\n return uint256(assetDeltas[0]);\n }\n }\n\n function queryBatchSwap(\n IVault.SwapKind kind,\n IVault.BatchSwapStep[] memory swaps,\n IAsset[] memory assets,\n IVault.FundManagement memory funds\n ) external override returns (int256[] memory assetDeltas) {\n return vault.queryBatchSwap(kind, swaps, assets, funds);\n }\n\n function queryJoin(\n bytes32 poolId,\n address sender,\n address recipient,\n IVault.JoinPoolRequest memory request\n ) external override returns (uint256 bptOut, uint256[] memory amountsIn) {\n (address pool, ) = vault.getPool(poolId);\n (uint256[] memory balances, uint256 lastChangeBlock) = _validateAssetsAndGetBalances(poolId, request.assets);\n IProtocolFeesCollector feesCollector = vault.getProtocolFeesCollector();\n\n (bptOut, amountsIn) = IBasePool(pool).queryJoin(\n poolId,\n sender,\n recipient,\n balances,\n lastChangeBlock,\n feesCollector.getSwapFeePercentage(),\n request.userData\n );\n }\n\n function queryExit(\n bytes32 poolId,\n address sender,\n address recipient,\n IVault.ExitPoolRequest memory request\n ) external override returns (uint256 bptIn, uint256[] memory amountsOut) {\n (address pool, ) = vault.getPool(poolId);\n (uint256[] memory balances, uint256 lastChangeBlock) = _validateAssetsAndGetBalances(poolId, request.assets);\n IProtocolFeesCollector feesCollector = vault.getProtocolFeesCollector();\n\n (bptIn, amountsOut) = IBasePool(pool).queryExit(\n poolId,\n sender,\n recipient,\n balances,\n lastChangeBlock,\n feesCollector.getSwapFeePercentage(),\n request.userData\n );\n }\n\n function _validateAssetsAndGetBalances(bytes32 poolId, IAsset[] memory expectedAssets)\n internal\n view\n returns (uint256[] memory balances, uint256 lastChangeBlock)\n {\n IERC20[] memory actualTokens;\n IERC20[] memory expectedTokens = _translateToIERC20(expectedAssets);\n\n (actualTokens, balances, lastChangeBlock) = vault.getPoolTokens(poolId);\n InputHelpers.ensureInputLengthMatch(actualTokens.length, expectedTokens.length);\n\n for (uint256 i = 0; i < actualTokens.length; ++i) {\n IERC20 token = actualTokens[i];\n _require(token == expectedTokens[i], Errors.TOKENS_MISMATCH);\n }\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"./IVault.sol\";\nimport \"./IPoolSwapStructs.sol\";\n\n/**\n * @dev Interface for adding and removing liquidity that all Pool contracts should implement. Note that this is not\n * the complete Pool contract interface, as it is missing the swap hooks. Pool contracts should also inherit from\n * either IGeneralPool or IMinimalSwapInfoPool\n */\ninterface IBasePool is IPoolSwapStructs {\n /**\n * @dev Called by the Vault when a user calls `IVault.joinPool` to add liquidity to this Pool. Returns how many of\n * each registered token the user should provide, as well as the amount of protocol fees the Pool owes to the Vault.\n * The Vault will then take tokens from `sender` and add them to the Pool's balances, as well as collect\n * the reported amount in protocol fees, which the pool should calculate based on `protocolSwapFeePercentage`.\n *\n * Protocol fees are reported and charged on join events so that the Pool is free of debt whenever new users join.\n *\n * `sender` is the account performing the join (from which tokens will be withdrawn), and `recipient` is the account\n * designated to receive any benefits (typically pool shares). `balances` contains the total balances\n * for each token the Pool registered in the Vault, in the same order that `IVault.getPoolTokens` would return.\n *\n * `lastChangeBlock` is the last block in which *any* of the Pool's registered tokens last changed its total\n * balance.\n *\n * `userData` contains any pool-specific instructions needed to perform the calculations, such as the type of\n * join (e.g., proportional given an amount of pool shares, single-asset, multi-asset, etc.)\n *\n * Contracts implementing this function should check that the caller is indeed the Vault before performing any\n * state-changing operations, such as minting pool shares.\n */\n function onJoinPool(\n bytes32 poolId,\n address sender,\n address recipient,\n uint256[] memory balances,\n uint256 lastChangeBlock,\n uint256 protocolSwapFeePercentage,\n bytes memory userData\n ) external returns (uint256[] memory amountsIn, uint256[] memory dueProtocolFeeAmounts);\n\n /**\n * @dev Called by the Vault when a user calls `IVault.exitPool` to remove liquidity from this Pool. Returns how many\n * tokens the Vault should deduct from the Pool's balances, as well as the amount of protocol fees the Pool owes\n * to the Vault. The Vault will then take tokens from the Pool's balances and send them to `recipient`,\n * as well as collect the reported amount in protocol fees, which the Pool should calculate based on\n * `protocolSwapFeePercentage`.\n *\n * Protocol fees are charged on exit events to guarantee that users exiting the Pool have paid their share.\n *\n * `sender` is the account performing the exit (typically the pool shareholder), and `recipient` is the account\n * to which the Vault will send the proceeds. `balances` contains the total token balances for each token\n * the Pool registered in the Vault, in the same order that `IVault.getPoolTokens` would return.\n *\n * `lastChangeBlock` is the last block in which *any* of the Pool's registered tokens last changed its total\n * balance.\n *\n * `userData` contains any pool-specific instructions needed to perform the calculations, such as the type of\n * exit (e.g., proportional given an amount of pool shares, single-asset, multi-asset, etc.)\n *\n * Contracts implementing this function should check that the caller is indeed the Vault before performing any\n * state-changing operations, such as burning pool shares.\n */\n function onExitPool(\n bytes32 poolId,\n address sender,\n address recipient,\n uint256[] memory balances,\n uint256 lastChangeBlock,\n uint256 protocolSwapFeePercentage,\n bytes memory userData\n ) external returns (uint256[] memory amountsOut, uint256[] memory dueProtocolFeeAmounts);\n\n /**\n * @dev Returns this Pool's ID, used when interacting with the Vault (to e.g. join the Pool or swap with it).\n */\n function getPoolId() external view returns (bytes32);\n\n /**\n * @dev Returns the current swap fee percentage as a 18 decimal fixed point number, so e.g. 1e17 corresponds to a\n * 10% swap fee.\n */\n function getSwapFeePercentage() external view returns (uint256);\n\n /**\n * @dev Returns the scaling factors of each of the Pool's tokens. This is an implementation detail that is typically\n * not relevant for outside parties, but which might be useful for some types of Pools.\n */\n function getScalingFactors() external view returns (uint256[] memory);\n\n function queryJoin(\n bytes32 poolId,\n address sender,\n address recipient,\n uint256[] memory balances,\n uint256 lastChangeBlock,\n uint256 protocolSwapFeePercentage,\n bytes memory userData\n ) external returns (uint256 bptOut, uint256[] memory amountsIn);\n\n function queryExit(\n bytes32 poolId,\n address sender,\n address recipient,\n uint256[] memory balances,\n uint256 lastChangeBlock,\n uint256 protocolSwapFeePercentage,\n bytes memory userData\n ) external returns (uint256 bptIn, uint256[] memory amountsOut);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../vault/IVault.sol\";\n\n/**\n * @dev Provides a way to perform queries on swaps, joins and exits, simulating these operations and returning the exact\n * result they would have if called on the Vault given the current state. Note that the results will be affected by\n * other transactions interacting with the Pools involved.\n *\n * All query functions can be called both on-chain and off-chain.\n *\n * If calling them from a contract, note that all query functions are not `view`. Despite this, these functions produce\n * no net state change, and for all intents and purposes can be thought of as if they were indeed `view`. However,\n * calling them via STATICCALL will fail.\n *\n * If calling them from an off-chain client, make sure to use eth_call: most clients default to eth_sendTransaction for\n * non-view functions.\n *\n * In all cases, the `fromInternalBalance` and `toInternalBalance` fields are entirely ignored: we just use the same\n * structs for simplicity.\n */\ninterface IBalancerQueries {\n function querySwap(IVault.SingleSwap memory singleSwap, IVault.FundManagement memory funds)\n external\n returns (uint256);\n\n function queryBatchSwap(\n IVault.SwapKind kind,\n IVault.BatchSwapStep[] memory swaps,\n IAsset[] memory assets,\n IVault.FundManagement memory funds\n ) external returns (int256[] memory assetDeltas);\n\n function queryJoin(\n bytes32 poolId,\n address sender,\n address recipient,\n IVault.JoinPoolRequest memory request\n ) external returns (uint256 bptOut, uint256[] memory amountsIn);\n\n function queryExit(\n bytes32 poolId,\n address sender,\n address recipient,\n IVault.ExitPoolRequest memory request\n ) external returns (uint256 bptIn, uint256[] memory amountsOut);\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\";\n\n// solhint-disable\n\nfunction _asIAsset(IERC20[] memory tokens) pure returns (IAsset[] memory assets) {\n // solhint-disable-next-line no-inline-assembly\n assembly {\n assets := tokens\n }\n}\n\nfunction _sortTokens(\n IERC20 tokenA,\n IERC20 tokenB,\n IERC20 tokenC\n) pure returns (IERC20[] memory tokens) {\n (uint256 indexTokenA, uint256 indexTokenB, uint256 indexTokenC) = _getSortedTokenIndexes(tokenA, tokenB, tokenC);\n tokens = new IERC20[](3);\n tokens[indexTokenA] = tokenA;\n tokens[indexTokenB] = tokenB;\n tokens[indexTokenC] = tokenC;\n}\n\nfunction _insertSorted(IERC20[] memory tokens, IERC20 token) pure returns (IERC20[] memory sorted) {\n sorted = new IERC20[](tokens.length + 1);\n\n if (tokens.length == 0) {\n sorted[0] = token;\n return sorted;\n }\n\n uint256 i;\n for (i = tokens.length; i > 0 && tokens[i - 1] > token; i--) sorted[i] = tokens[i - 1];\n for (uint256 j = 0; j < i; j++) sorted[j] = tokens[j];\n sorted[i] = token;\n}\n\nfunction _findTokenIndex(IERC20[] memory tokens, IERC20 token) pure returns (uint256) {\n // Note that while we know tokens are initially sorted, we cannot assume this will hold throughout\n // the pool's lifetime, as pools with mutable tokens can append and remove tokens in any order.\n uint256 tokensLength = tokens.length;\n for (uint256 i = 0; i < tokensLength; i++) {\n if (tokens[i] == token) {\n return i;\n }\n }\n\n _revert(Errors.INVALID_TOKEN);\n}\n\nfunction _getSortedTokenIndexes(\n IERC20 tokenA,\n IERC20 tokenB,\n IERC20 tokenC\n)\n pure\n returns (\n uint256 indexTokenA,\n uint256 indexTokenB,\n uint256 indexTokenC\n )\n{\n if (tokenA < tokenB) {\n if (tokenB < tokenC) {\n // (tokenA, tokenB, tokenC)\n return (0, 1, 2);\n } else if (tokenA < tokenC) {\n // (tokenA, tokenC, tokenB)\n return (0, 2, 1);\n } else {\n // (tokenC, tokenA, tokenB)\n return (1, 2, 0);\n }\n } else {\n // tokenB < tokenA\n if (tokenC < tokenB) {\n // (tokenC, tokenB, tokenA)\n return (2, 1, 0);\n } else if (tokenC < tokenA) {\n // (tokenB, tokenC, tokenA)\n return (2, 0, 1);\n } else {\n // (tokenB, tokenA, tokenC)\n return (1, 0, 2);\n }\n }\n}\n"},"contracts/relayer/special/DoubleEntrypointFixRelayer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\n/**\n * @title DoubleEntrypointFixRelayer\n * @notice This contract performs mitigations to safeguard funds affected by double-entrypoint tokens (mostly Synthetix\n * tokens). It doesn't use the standard relayer architecture to simplify the code.\n */\ncontract DoubleEntrypointFixRelayer is IFlashLoanRecipient {\n using SafeERC20 for IERC20;\n\n // solhint-disable const-name-snakecase\n IERC20 public constant BTC_STABLE_POOL_ADDRESS = IERC20(0xFeadd389a5c427952D8fdb8057D6C8ba1156cC56);\n bytes32 public constant BTC_STABLE_POOL_ID = 0xfeadd389a5c427952d8fdb8057d6c8ba1156cc56000000000000000000000066;\n\n // solhint-disable const-name-snakecase\n IERC20 public constant wBTC = IERC20(0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599);\n IERC20 public constant renBTC = IERC20(0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D);\n IERC20 public constant sBTC = IERC20(0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6);\n IERC20 public constant sBTC_IMPLEMENTATION = IERC20(0x18FcC34bdEaaF9E3b69D2500343527c0c995b1d6);\n\n IERC20 public constant SNX_WEIGHTED_POOL_ADDRESS = IERC20(0x072f14B85ADd63488DDaD88f855Fda4A99d6aC9B);\n bytes32 public constant SNX_WEIGHTED_POOL_ID = 0x072f14b85add63488ddad88f855fda4a99d6ac9b000200000000000000000027;\n IERC20 public constant SNX = IERC20(0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F);\n IERC20 public constant WETH = IERC20(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);\n IERC20 public constant SNX_IMPLEMENTATION = IERC20(0x639032d3900875a4cf4960aD6b9ee441657aA93C);\n // solhint-enable const-name-snakecase\n\n // This was removed from the StablePoolEncoder along with StablePool.\n uint256 private constant _STABLE_POOL_EXIT_KIND_EXACT_BPT_IN_FOR_TOKENS_OUT = 1;\n\n IVault private immutable _vault;\n IProtocolFeesCollector private immutable _protocolFeeCollector;\n\n constructor(IVault vault) {\n _vault = vault;\n _protocolFeeCollector = vault.getProtocolFeesCollector();\n }\n\n function getVault() public view returns (IVault) {\n return _vault;\n }\n\n /**\n * @notice Fully exit the BTC Stable Pool into its three components (wBTC, renBTC and sBTC), with no price impact\n * nor swap fees. This relayer must have been previously approved by the caller, and proper permissions granted by\n * Balancer Governance.\n */\n function exitBTCStablePool() external {\n IERC20[] memory tokens = new IERC20[](3);\n tokens[0] = wBTC;\n tokens[1] = renBTC;\n tokens[2] = sBTC;\n uint256 bptAmountIn = BTC_STABLE_POOL_ADDRESS.balanceOf(msg.sender);\n\n // Pull sBTC out from the Protocol Fee Collector and send it to the Vault ready for the exit. Computing the\n // exact amount of sBTC required is a complicated task, as it involves due protocol fees, so we simply send all\n // of it.\n _withdrawFromProtocolFeeCollector(sBTC, sBTC.balanceOf(address(_protocolFeeCollector)));\n\n // Perform the exit.\n bytes memory userData = abi.encode(_STABLE_POOL_EXIT_KIND_EXACT_BPT_IN_FOR_TOKENS_OUT, bptAmountIn);\n IVault.ExitPoolRequest memory request = IVault.ExitPoolRequest(\n _asIAsset(tokens),\n new uint256[](tokens.length),\n userData,\n false\n );\n getVault().exitPool(BTC_STABLE_POOL_ID, msg.sender, msg.sender, request);\n\n // Sweep any remaining sBTC back into the Protocol Fee Collector.\n IERC20[] memory sBTCEntrypoints = new IERC20[](2);\n sBTCEntrypoints[0] = sBTC_IMPLEMENTATION;\n sBTCEntrypoints[1] = IERC20(address(sBTC));\n sweepDoubleEntrypointToken(sBTCEntrypoints);\n }\n\n /**\n * @notice Fully exit the SNX Weighted Pool into its two components (SNX and WETH), with no price impact nor swap\n * fees. This relayer must have been previously approved by the caller, and proper permissions granted by\n * Balancer Governance.\n */\n function exitSNXWeightedPool() external {\n IERC20[] memory tokens = new IERC20[](2);\n tokens[0] = SNX;\n tokens[1] = WETH;\n uint256 bptAmountIn = SNX_WEIGHTED_POOL_ADDRESS.balanceOf(msg.sender);\n\n // Pull SNX out from the Protocol Fee Collector and send it to the Vault ready for the exit. Computing the\n // exact amount of SNX required is a complicated task, as it involves due protocol fees, so we simply send all\n // of it.\n _withdrawFromProtocolFeeCollector(SNX, SNX.balanceOf(address(_protocolFeeCollector)));\n\n // Perform the exit.\n bytes memory userData = abi.encode(WeightedPoolUserData.ExitKind.EXACT_BPT_IN_FOR_TOKENS_OUT, bptAmountIn);\n IVault.ExitPoolRequest memory request = IVault.ExitPoolRequest(\n _asIAsset(tokens),\n new uint256[](tokens.length),\n userData,\n false\n );\n getVault().exitPool(SNX_WEIGHTED_POOL_ID, msg.sender, msg.sender, request);\n\n // Sweep any remaining SNX back into the Protocol Fee Collector.\n IERC20[] memory snxEntrypoints = new IERC20[](2);\n snxEntrypoints[0] = SNX_IMPLEMENTATION;\n snxEntrypoints[1] = IERC20(address(SNX));\n sweepDoubleEntrypointToken(snxEntrypoints);\n }\n\n function _withdrawFromProtocolFeeCollector(IERC20 token, uint256 amount) internal {\n IERC20[] memory tokens = new IERC20[](1);\n tokens[0] = token;\n uint256[] memory amounts = new uint256[](1);\n amounts[0] = amount;\n\n _protocolFeeCollector.withdrawCollectedFees(tokens, amounts, address(_vault));\n }\n\n /**\n * @notice Sweep all SNX and sBTC from the Vault into the Protocol Fee Collector.\n */\n function sweepSNXsBTC() public {\n IERC20[] memory snxEntrypoints = new IERC20[](2);\n snxEntrypoints[0] = SNX_IMPLEMENTATION;\n snxEntrypoints[1] = IERC20(address(SNX));\n\n sweepDoubleEntrypointToken(snxEntrypoints);\n\n IERC20[] memory sBTCEntrypoints = new IERC20[](2);\n sBTCEntrypoints[0] = sBTC_IMPLEMENTATION;\n sBTCEntrypoints[1] = IERC20(address(sBTC));\n sweepDoubleEntrypointToken(sBTCEntrypoints);\n }\n\n /**\n * @notice Sweep a double-entrypoint token into the Protocol Fee Collector by passing all entrypoints of a given\n * token.\n */\n function sweepDoubleEntrypointToken(IERC20[] memory tokens) public {\n uint256[] memory amounts = new uint256[](tokens.length);\n amounts[0] = tokens[0].balanceOf(address(_vault));\n _vault.flashLoan(this, tokens, amounts, \"0x\");\n }\n\n /**\n * @dev Flash loan callback. Assumes that it receives a flashloan of multiple assets (all entrypoints of a Synthetix\n * synth). We only need to repay the first loan as that will automatically all other loans.\n */\n function receiveFlashLoan(\n IERC20[] memory tokens,\n uint256[] memory amounts,\n uint256[] memory,\n bytes memory\n ) external override {\n _require(msg.sender == address(_vault), Errors.CALLER_NOT_VAULT);\n tokens[0].safeTransfer(address(_vault), amounts[0]);\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nlibrary StablePoolUserData {\n enum JoinKind { INIT, EXACT_TOKENS_IN_FOR_BPT_OUT, TOKEN_IN_FOR_EXACT_BPT_OUT }\n enum ExitKind { EXACT_BPT_IN_FOR_ONE_TOKEN_OUT, BPT_IN_FOR_EXACT_TOKENS_OUT }\n\n function joinKind(bytes memory self) internal pure returns (JoinKind) {\n return abi.decode(self, (JoinKind));\n }\n\n function exitKind(bytes memory self) internal pure returns (ExitKind) {\n return abi.decode(self, (ExitKind));\n }\n\n // Joins\n\n function initialAmountsIn(bytes memory self) internal pure returns (uint256[] memory amountsIn) {\n (, amountsIn) = abi.decode(self, (JoinKind, uint256[]));\n }\n\n function exactTokensInForBptOut(bytes memory self)\n internal\n pure\n returns (uint256[] memory amountsIn, uint256 minBPTAmountOut)\n {\n (, amountsIn, minBPTAmountOut) = abi.decode(self, (JoinKind, uint256[], uint256));\n }\n\n function tokenInForExactBptOut(bytes memory self) internal pure returns (uint256 bptAmountOut, uint256 tokenIndex) {\n (, bptAmountOut, tokenIndex) = abi.decode(self, (JoinKind, uint256, uint256));\n }\n\n // Exits\n\n function exactBptInForTokenOut(bytes memory self) internal pure returns (uint256 bptAmountIn, uint256 tokenIndex) {\n (, bptAmountIn, tokenIndex) = abi.decode(self, (ExitKind, uint256, uint256));\n }\n\n function bptInForExactTokensOut(bytes memory self)\n internal\n pure\n returns (uint256[] memory amountsOut, uint256 maxBPTAmountIn)\n {\n (, amountsOut, maxBPTAmountIn) = abi.decode(self, (ExitKind, uint256[], uint256));\n }\n}\n"},"contracts/test/TestWETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\";\n\ncontract TestWETH is IWETH {\n string public name = \"Wrapped Ether\";\n string public symbol = \"WETH\";\n uint8 public decimals = 18;\n\n event Deposit(address indexed dst, uint256 wad);\n event Withdrawal(address indexed src, uint256 wad);\n\n mapping(address => uint256) public override balanceOf;\n mapping(address => mapping(address => uint256)) public override allowance;\n\n receive() external payable {\n deposit();\n }\n\n function deposit() public payable override {\n balanceOf[msg.sender] += msg.value;\n emit Deposit(msg.sender, msg.value);\n }\n\n function withdraw(uint256 wad) public override {\n require(balanceOf[msg.sender] >= wad, \"INSUFFICIENT_BALANCE\");\n balanceOf[msg.sender] -= wad;\n msg.sender.transfer(wad);\n emit Withdrawal(msg.sender, wad);\n }\n\n // For testing purposes - this creates WETH that cannot be redeemed for ETH via 'withdraw'\n function mint(address destinatary, uint256 amount) external {\n balanceOf[destinatary] += amount;\n emit Deposit(destinatary, amount);\n }\n\n function totalSupply() public view override returns (uint256) {\n return address(this).balance;\n }\n\n function approve(address guy, uint256 wad) public override returns (bool) {\n allowance[msg.sender][guy] = wad;\n emit Approval(msg.sender, guy, wad);\n return true;\n }\n\n function transfer(address dst, uint256 wad) public override returns (bool) {\n return transferFrom(msg.sender, dst, wad);\n }\n\n function transferFrom(\n address src,\n address dst,\n uint256 wad\n ) public override returns (bool) {\n require(balanceOf[src] >= wad, \"INSUFFICIENT_BALANCE\");\n\n if (src != msg.sender && allowance[src][msg.sender] != uint256(-1)) {\n require(allowance[src][msg.sender] >= wad, \"INSUFFICIENT_ALLOWANCE\");\n allowance[src][msg.sender] -= wad;\n }\n\n balanceOf[src] -= wad;\n balanceOf[dst] += wad;\n\n emit Transfer(src, dst, wad);\n\n return true;\n }\n}\n"},"contracts/test/MockStaticATokenLM.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol\";\n\ncontract MockStaticATokenLM is ERC20Mock, IStaticATokenLM {\n // Mock event to log calls, taken from\n // https://github.com/aave/protocol-v2/blob/ac58fea62bb8afee23f66197e8bce6d79ecda292/contracts/protocol/tokenization/StaticATokenLM.sol\n event Deposit(address depositor, address recipient, uint256 amount, uint16 referralCode, bool fromUnderlying);\n\n event Withdraw(address owner, address recipient, uint256 staticAmount, uint256 dynamicAmount, bool toUnderlying);\n\n uint256 private constant _rate = 1e27;\n IERC20 private immutable _ASSET;\n IERC20 private immutable _ATOKEN;\n\n constructor(\n string memory name,\n string memory symbol,\n IERC20 underlyingAsset,\n IERC20 aToken\n ) ERC20Mock(name, symbol) {\n _ASSET = underlyingAsset;\n _ATOKEN = aToken;\n }\n\n // solhint-disable-next-line func-name-mixedcase\n function ASSET() external view override returns (IERC20) {\n return _ASSET;\n }\n\n function ATOKEN() external view override returns (IERC20) {\n return _ATOKEN;\n }\n\n // solhint-disable-next-line func-name-mixedcase\n function LENDING_POOL() external pure override returns (address) {\n revert(\"Mock method; not implemented\");\n }\n\n function rate() public pure override returns (uint256) {\n return _rate;\n }\n\n function deposit(\n address recipient,\n uint256 amount,\n uint16 referralCode,\n bool fromUnderlying\n ) external override returns (uint256) {\n emit Deposit(msg.sender, recipient, amount, referralCode, fromUnderlying);\n return amount;\n }\n\n function withdraw(\n address recipient,\n uint256 amount,\n bool toUnderlying\n ) external override returns (uint256, uint256) {\n emit Withdraw(msg.sender, recipient, amount, staticToDynamicAmount(amount), toUnderlying);\n return (amount, amount);\n }\n\n function staticToDynamicAmount(uint256 amount) public pure override returns (uint256) {\n return amount;\n }\n\n function dynamicToStaticAmount(uint256 amount) external pure override returns (uint256) {\n return amount;\n }\n\n function permit(\n address,\n address,\n uint256,\n uint256,\n uint8,\n bytes32,\n bytes32\n ) public pure override {\n revert(\"Mock method; not implemented\");\n }\n\n function getDomainSeparator() public pure override returns (bytes32) {\n revert(\"Mock method; not implemented\");\n }\n\n function withdrawDynamicAmount(\n address,\n uint256,\n bool\n ) external pure override returns (uint256, uint256) {\n revert(\"Mock method; not implemented\");\n }\n\n function metaDeposit(\n address,\n address,\n uint256,\n uint16,\n bool,\n uint256,\n SignatureParams calldata\n ) external pure override returns (uint256) {\n revert(\"Mock method; not implemented\");\n }\n\n function metaWithdraw(\n address,\n address,\n uint256,\n uint256,\n bool,\n uint256,\n SignatureParams calldata\n ) external pure override returns (uint256, uint256) {\n revert(\"Mock method; not implemented\");\n }\n\n function dynamicBalanceOf(address) external pure override returns (uint256) {\n revert(\"Mock method; not implemented\");\n }\n\n function collectAndUpdateRewards() external pure override {\n revert(\"Mock method; not implemented\");\n }\n\n function claimRewardsOnBehalf(\n address,\n address,\n bool\n ) external pure override {\n revert(\"Mock method; not implemented\");\n }\n\n function claimRewards(address, bool) external pure override {\n revert(\"Mock method; not implemented\");\n }\n\n function claimRewardsToSelf(bool) external pure override {\n revert(\"Mock method; not implemented\");\n }\n\n function getTotalClaimableRewards() external pure override returns (uint256) {\n revert(\"Mock method; not implemented\");\n }\n\n function getClaimableRewards(address) external pure override returns (uint256) {\n revert(\"Mock method; not implemented\");\n }\n\n function getUnclaimedRewards(address) external pure override returns (uint256) {\n revert(\"Mock method; not implemented\");\n }\n\n function getAccRewardsPerToken() external pure override returns (uint256) {\n revert(\"Mock method; not implemented\");\n }\n\n function getLifetimeRewardsClaimed() external pure override returns (uint256) {\n revert(\"Mock method; not implemented\");\n }\n\n function getLifetimeRewards() external pure override returns (uint256) {\n revert(\"Mock method; not implemented\");\n }\n\n function getLastRewardBlock() external pure override returns (uint256) {\n revert(\"Mock method; not implemented\");\n }\n\n function INCENTIVES_CONTROLLER() external pure override returns (address) {\n revert(\"Mock method; not implemented\");\n }\n\n function REWARD_TOKEN() external pure override returns (IERC20) {\n revert(\"Mock method; not implemented\");\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../openzeppelin/ERC20.sol\";\n\ncontract ERC20Mock is ERC20 {\n constructor(string memory name, string memory symbol) ERC20(name, symbol) {}\n\n function mint(address recipient, uint256 amount) external {\n _mint(recipient, amount);\n }\n\n function burn(address sender, uint256 amount) external {\n _burn(sender, amount);\n }\n}\n"},"contracts/test/MockBaseRelayerLibrary.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\n//import \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBaseRelayerLibrary.sol\";\n\nimport \"../relayer/BaseRelayerLibrary.sol\";\n\ncontract MockBaseRelayerLibrary is BaseRelayerLibrary {\n event ChainedReferenceValueRead(uint256 value);\n\n constructor(IVault vault) BaseRelayerLibrary(vault) {}\n\n function isChainedReference(uint256 amount) public pure returns (bool) {\n return _isChainedReference(amount);\n }\n\n function setChainedReferenceValue(uint256 ref, uint256 value) public {\n _setChainedReferenceValue(ref, value);\n }\n\n function getChainedReferenceValue(uint256 ref) public {\n emit ChainedReferenceValueRead(_getChainedReferenceValue(ref));\n }\n\n function bytesTunnel(bytes memory input) public pure returns (bytes memory) {\n return input;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the EnumerableSet library from OpenZeppelin Contracts, altered to remove the base private functions that\n// work on bytes32, replacing them with a native implementation for address and bytes32 values, to reduce bytecode\n// size and runtime costs.\n// The `unchecked_at` function was also added, which allows for more gas efficient data reads in some scenarios.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n * // Add the library methods\n * using EnumerableSet for EnumerableSet.AddressSet;\n *\n * // Declare a set state variable\n * EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n */\nlibrary EnumerableSet {\n // The original OpenZeppelin implementation uses a generic Set type with bytes32 values: this was replaced with\n // AddressSet, which uses address keys natively, resulting in more dense bytecode.\n\n struct AddressSet {\n // Storage of set values\n address[] _values;\n // Position of the value in the `values` array, plus 1 because index 0\n // means a value is not in the set.\n mapping(address => uint256) _indexes;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, if it was not already present.\n */\n function add(AddressSet storage set, address value) internal returns (bool) {\n if (!contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._indexes[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(AddressSet storage set, address value) internal returns (bool) {\n // We read and store the value's index to prevent multiple reads from the same storage slot\n uint256 valueIndex = set._indexes[value];\n\n if (valueIndex != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = valueIndex - 1;\n uint256 lastIndex = set._values.length - 1;\n\n // The swap is only necessary if we're not removing the last element\n if (toDeleteIndex != lastIndex) {\n address lastValue = set._values[lastIndex];\n\n // Move the last value to the index where the value to delete is\n set._values[toDeleteIndex] = lastValue;\n // Update the index for the moved value\n set._indexes[lastValue] = toDeleteIndex + 1; // All indexes are 1-based\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the index for the deleted slot\n delete set._indexes[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(AddressSet storage set, address value) internal view returns (bool) {\n return set._indexes[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function length(AddressSet storage set) internal view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\n _require(set._values.length > index, Errors.OUT_OF_BOUNDS);\n return unchecked_at(set, index);\n }\n\n /**\n * @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n * than {length}). O(1).\n *\n * This function performs one less storage read than {at}, but should only be used when `index` is known to be\n * within bounds.\n */\n // solhint-disable-next-line func-name-mixedcase\n function unchecked_at(AddressSet storage set, uint256 index) internal view returns (address) {\n return set._values[index];\n }\n\n function rawIndexOf(AddressSet storage set, address value) internal view returns (uint256) {\n return set._indexes[value] - 1;\n }\n\n struct Bytes32Set {\n // Storage of set values\n bytes32[] _values;\n // Position of the value in the `values` array, plus 1 because index 0\n // means a value is not in the set.\n mapping(bytes32 => uint256) _indexes;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n if (!contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._indexes[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was present.\n */\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n // We read and store the value's index to prevent multiple reads from the same storage slot\n uint256 valueIndex = set._indexes[value];\n\n if (valueIndex != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = valueIndex - 1;\n uint256 lastIndex = set._values.length - 1;\n\n // The swap is only necessary if we're not removing the last element\n if (toDeleteIndex != lastIndex) {\n bytes32 lastValue = set._values[lastIndex];\n\n // Move the last value to the index where the value to delete is\n set._values[toDeleteIndex] = lastValue;\n // Update the index for the moved value\n set._indexes[lastValue] = toDeleteIndex + 1; // All indexes are 1-based\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the index for the deleted slot\n delete set._indexes[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n return set._indexes[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function length(Bytes32Set storage set) internal view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n _require(set._values.length > index, Errors.OUT_OF_BOUNDS);\n return unchecked_at(set, index);\n }\n\n /**\n * @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n * than {length}). O(1).\n *\n * This function performs one less storage read than {at}, but should only be used when `index` is known to be\n * within bounds.\n */\n // solhint-disable-next-line func-name-mixedcase\n function unchecked_at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n return set._values[index];\n }\n\n function rawIndexOf(Bytes32Set storage set, bytes32 value) internal view returns (uint256) {\n return set._indexes[value] - 1;\n }\n}\n"},"contracts/ProtocolFeesWithdrawer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\";\n\n/**\n * @author Balancer Labs\n * @title Protocol Fees Withdrawer\n * @notice Safety layer around the Protocol Fees Collector which allows withdrawals of specific tokens to be blocked.\n * This is useful for the case where tokens that shouldn't be distributed are unexpectedly paid into the Protocol\n * Fees Collector.\n */\ncontract ProtocolFeesWithdrawer is IProtocolFeesWithdrawer, SingletonAuthentication {\n using EnumerableSet for EnumerableSet.AddressSet;\n\n IProtocolFeesCollector private immutable _protocolFeesCollector;\n\n EnumerableSet.AddressSet private _denylistedTokens;\n\n constructor(IVault vault, IERC20[] memory initialDeniedTokens) SingletonAuthentication(vault) {\n _protocolFeesCollector = vault.getProtocolFeesCollector();\n\n uint256 tokensLength = initialDeniedTokens.length;\n for (uint256 i = 0; i < tokensLength; ++i) {\n _denylistToken(initialDeniedTokens[i]);\n }\n }\n\n /**\n * @notice Returns the address of the Protocol Fee Collector.\n */\n function getProtocolFeesCollector() external view override returns (IProtocolFeesCollector) {\n return _protocolFeesCollector;\n }\n\n /**\n * @notice Returns whether the provided token may be withdrawn from the Protocol Fee Collector\n */\n function isWithdrawableToken(IERC20 token) public view override returns (bool) {\n return !_denylistedTokens.contains(address(token));\n }\n\n /**\n * @notice Returns whether the provided array of tokens may be withdrawn from the Protocol Fee Collector\n * @dev Returns false if any token is denylisted.\n */\n function isWithdrawableTokens(IERC20[] calldata tokens) public view override returns (bool) {\n uint256 tokensLength = tokens.length;\n for (uint256 i = 0; i < tokensLength; ++i) {\n if (!isWithdrawableToken(tokens[i])) return false;\n }\n return true;\n }\n\n /**\n * @notice Returns the denylisted token at the given `index`.\n */\n function getDenylistedToken(uint256 index) external view override returns (IERC20) {\n return IERC20(_denylistedTokens.at(index));\n }\n\n /**\n * @notice Returns the number of denylisted tokens.\n */\n function getDenylistedTokensLength() external view override returns (uint256) {\n return _denylistedTokens.length();\n }\n\n /**\n * @notice Withdraws fees from the Protocol Fee Collector.\n * @dev Reverts if attempting to withdraw a denylisted token.\n * @param tokens - an array of token addresses to withdraw.\n * @param amounts - an array of the amounts of each token to withdraw.\n * @param recipient - the address to which to send the withdrawn tokens.\n */\n function withdrawCollectedFees(\n IERC20[] calldata tokens,\n uint256[] calldata amounts,\n address recipient\n ) external override authenticate {\n require(isWithdrawableTokens(tokens), \"Attempting to withdraw denylisted token\");\n\n // We delegate checking of inputs and reentrancy protection to the ProtocolFeesCollector.\n _protocolFeesCollector.withdrawCollectedFees(tokens, amounts, recipient);\n }\n\n /**\n * @notice Marks the provided token as ineligible for withdrawal from the Protocol Fee Collector\n */\n function denylistToken(IERC20 token) external override authenticate {\n _denylistToken(token);\n }\n\n /**\n * @notice Marks the provided token as eligible for withdrawal from the Protocol Fee Collector\n */\n function allowlistToken(IERC20 token) external override authenticate {\n require(_denylistedTokens.remove(address(token)), \"Token is not denylisted\");\n emit TokenAllowlisted(token);\n }\n\n // Internal functions\n\n function _denylistToken(IERC20 token) internal {\n require(_denylistedTokens.add(address(token)), \"Token already denylisted\");\n emit TokenDenylisted(token);\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../vault/IProtocolFeesCollector.sol\";\n\n/**\n * @author Balancer Labs\n * @title Protocol Fees Withdrawer\n * @notice Safety layer around the Protocol Fees Collector which allows withdrawals of specific tokens to be blocked.\n * This is useful for the case in where tokens that shouldn't be distributed are unexpectedly paid into the Protocol\n * Fees Collector.\n */\ninterface IProtocolFeesWithdrawer {\n event TokenAllowlisted(IERC20 token);\n event TokenDenylisted(IERC20 token);\n\n /**\n * @notice Returns the address of the Protocol Fee Collector.\n */\n function getProtocolFeesCollector() external view returns (IProtocolFeesCollector);\n\n /**\n * @notice Returns whether the provided token may be withdrawn from the Protocol Fee Collector\n */\n function isWithdrawableToken(IERC20 token) external view returns (bool);\n\n /**\n * @notice Returns whether the provided array of tokens may be withdrawn from the Protocol Fee Collector\n * @dev Returns false if any token is denylisted.\n */\n function isWithdrawableTokens(IERC20[] calldata tokens) external view returns (bool);\n\n /**\n * @notice Returns the denylisted token at the given `index`.\n */\n function getDenylistedToken(uint256 index) external view returns (IERC20);\n\n /**\n * @notice Returns the number of denylisted tokens.\n */\n function getDenylistedTokensLength() external view returns (uint256);\n\n /**\n * @notice Withdraws fees from the Protocol Fee Collector.\n * @dev Reverts if attempting to withdraw a denylisted token.\n * @param tokens - an array of token addresses to withdraw.\n * @param amounts - an array of the amounts of each token to withdraw.\n * @param recipient - the address to which to send the withdrawn tokens.\n */\n function withdrawCollectedFees(\n IERC20[] calldata tokens,\n uint256[] calldata amounts,\n address recipient\n ) external;\n\n /**\n * @notice Marks the provided token as ineligible for withdrawal from the Protocol Fee Collector\n */\n function denylistToken(IERC20 token) external;\n\n /**\n * @notice Marks the provided token as eligible for withdrawal from the Protocol Fee Collector\n */\n function allowlistToken(IERC20 token) external;\n}\n"},"contracts/ProtocolFeePercentagesProvider.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol\";\n\ncontract ProtocolFeePercentagesProvider is IProtocolFeePercentagesProvider, SingletonAuthentication {\n using SafeCast for uint256;\n\n IProtocolFeesCollector private immutable _protocolFeesCollector;\n\n struct FeeTypeData {\n uint64 value;\n uint64 maximum;\n bool registered;\n string name;\n }\n\n mapping(uint256 => FeeTypeData) private _feeTypeData;\n\n // Absolute maximum fee percentages (1e18 = 100%, 1e16 = 1%).\n\n // No fee can go over 100%\n uint256 private constant _MAX_PROTOCOL_FEE_PERCENTAGE = 1e18; // 100%\n\n // These are copied from ProtocolFeesCollector\n uint256 private constant _MAX_PROTOCOL_SWAP_FEE_PERCENTAGE = 50e16; // 50%\n uint256 private constant _MAX_PROTOCOL_FLASH_LOAN_FEE_PERCENTAGE = 1e16; // 1%\n\n constructor(\n IVault vault,\n uint256 maxYieldValue,\n uint256 maxAUMValue\n ) SingletonAuthentication(vault) {\n IProtocolFeesCollector protocolFeeCollector = vault.getProtocolFeesCollector();\n _protocolFeesCollector = protocolFeeCollector; // Note that this is immutable in the Vault as well\n\n // Initialize all starting fee types\n\n // Yield and AUM types are initialized with a value of 0.\n _registerFeeType(ProtocolFeeType.YIELD, \"Yield\", maxYieldValue, 0);\n _registerFeeType(ProtocolFeeType.AUM, \"Assets Under Management\", maxAUMValue, 0);\n\n // Swap and Flash loan types are special as their storage is actually located in the ProtocolFeesCollector. We\n // therefore simply mark them as registered, but ignore maximum and initial values. Not calling _registerFeeType\n // also means that ProtocolFeeTypeRegistered nor ProtocolFeePercentageChanged events will be emitted for these.\n _feeTypeData[ProtocolFeeType.SWAP].registered = true;\n _feeTypeData[ProtocolFeeType.SWAP].name = \"Swap\";\n\n _feeTypeData[ProtocolFeeType.FLASH_LOAN].registered = true;\n _feeTypeData[ProtocolFeeType.FLASH_LOAN].name = \"Flash Loan\";\n }\n\n modifier withValidFeeType(uint256 feeType) {\n require(isValidFeeType(feeType), \"Non-existent fee type\");\n _;\n }\n\n function registerFeeType(\n uint256 feeType,\n string memory name,\n uint256 maximumValue,\n uint256 initialValue\n ) external override authenticate {\n require(!_feeTypeData[feeType].registered, \"Fee type already registered\");\n _registerFeeType(feeType, name, maximumValue, initialValue);\n }\n\n function _registerFeeType(\n uint256 feeType,\n string memory name,\n uint256 maximumValue,\n uint256 initialValue\n ) private {\n require((maximumValue > 0) && (maximumValue <= _MAX_PROTOCOL_FEE_PERCENTAGE), \"Invalid maximum fee percentage\");\n require(initialValue <= maximumValue, \"Invalid initial percentage\");\n\n _feeTypeData[feeType] = FeeTypeData({\n registered: true,\n name: name,\n maximum: maximumValue.toUint64(),\n value: initialValue.toUint64()\n });\n\n emit ProtocolFeeTypeRegistered(feeType, name, maximumValue);\n emit ProtocolFeePercentageChanged(feeType, initialValue);\n }\n\n function isValidFeeType(uint256 feeType) public view override returns (bool) {\n return _feeTypeData[feeType].registered;\n }\n\n function isValidFeeTypePercentage(uint256 feeType, uint256 value)\n public\n view\n override\n withValidFeeType(feeType)\n returns (bool)\n {\n return value <= getFeeTypeMaximumPercentage(feeType);\n }\n\n function setFeeTypePercentage(uint256 feeType, uint256 newValue)\n external\n override\n withValidFeeType(feeType)\n authenticate\n {\n require(isValidFeeTypePercentage(feeType, newValue), \"Invalid fee percentage\");\n\n if (feeType == ProtocolFeeType.SWAP) {\n _protocolFeesCollector.setSwapFeePercentage(newValue);\n } else if (feeType == ProtocolFeeType.FLASH_LOAN) {\n _protocolFeesCollector.setFlashLoanFeePercentage(newValue);\n } else {\n _feeTypeData[feeType].value = newValue.toUint64();\n }\n\n emit ProtocolFeePercentageChanged(feeType, newValue);\n }\n\n function getFeeTypePercentage(uint256 feeType) external view override withValidFeeType(feeType) returns (uint256) {\n if (feeType == ProtocolFeeType.SWAP) {\n return _protocolFeesCollector.getSwapFeePercentage();\n } else if (feeType == ProtocolFeeType.FLASH_LOAN) {\n return _protocolFeesCollector.getFlashLoanFeePercentage();\n } else {\n return _feeTypeData[feeType].value;\n }\n }\n\n function getFeeTypeMaximumPercentage(uint256 feeType)\n public\n view\n override\n withValidFeeType(feeType)\n returns (uint256)\n {\n if (feeType == ProtocolFeeType.SWAP) {\n return _MAX_PROTOCOL_SWAP_FEE_PERCENTAGE;\n } else if (feeType == ProtocolFeeType.FLASH_LOAN) {\n return _MAX_PROTOCOL_FLASH_LOAN_FEE_PERCENTAGE;\n } else {\n return _feeTypeData[feeType].maximum;\n }\n }\n\n function getFeeTypeName(uint256 feeType) external view override withValidFeeType(feeType) returns (string memory) {\n return _feeTypeData[feeType].name;\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\n/**\n * @dev Source of truth for all Protocol Fee percentages, that is, how much the protocol charges certain actions. Some\n * of these values may also be retrievable from other places (such as the swap fee percentage), but this is the\n * preferred source nonetheless.\n */\ninterface IProtocolFeePercentagesProvider {\n // All fee percentages are 18-decimal fixed point numbers, so e.g. 1e18 = 100% and 1e16 = 1%.\n\n // Emitted when a new fee type is registered.\n event ProtocolFeeTypeRegistered(uint256 indexed feeType, string name, uint256 maximumPercentage);\n\n // Emitted when the value of a fee type changes.\n // IMPORTANT: it is possible for a third party to modify the SWAP and FLASH_LOAN fee type values directly in the\n // ProtocolFeesCollector, which will result in this event not being emitted despite their value changing. Such usage\n // of the ProtocolFeesCollector is however discouraged: all state-changing interactions with it should originate in\n // this contract.\n event ProtocolFeePercentageChanged(uint256 indexed feeType, uint256 percentage);\n\n /**\n * @dev Registers a new fee type in the system, making it queryable via `getFeeTypePercentage` and `getFeeTypeName`,\n * as well as configurable via `setFeeTypePercentage`.\n *\n * `feeType` can be any arbitrary value (that is not in use).\n *\n * It is not possible to de-register fee types, nor change their name or maximum value.\n */\n function registerFeeType(\n uint256 feeType,\n string memory name,\n uint256 maximumValue,\n uint256 initialValue\n ) external;\n\n /**\n * @dev Returns true if `feeType` has been registered and can be queried.\n */\n function isValidFeeType(uint256 feeType) external view returns (bool);\n\n /**\n * @dev Returns true if `value` is a valid percentage value for `feeType`.\n */\n function isValidFeeTypePercentage(uint256 feeType, uint256 value) external view returns (bool);\n\n /**\n * @dev Sets the percentage value for `feeType` to `newValue`.\n *\n * IMPORTANT: it is possible for a third party to modify the SWAP and FLASH_LOAN fee type values directly in the\n * ProtocolFeesCollector, without invoking this function. This will result in the `ProtocolFeePercentageChanged`\n * event not being emitted despite their value changing. Such usage of the ProtocolFeesCollector is however\n * discouraged: only this contract should be granted permission to call `setSwapFeePercentage` and\n * `setFlashLoanFeePercentage`.\n */\n function setFeeTypePercentage(uint256 feeType, uint256 newValue) external;\n\n /**\n * @dev Returns the current percentage value for `feeType`. This is the preferred mechanism for querying these -\n * whenever possible, use this fucntion instead of e.g. querying the ProtocolFeesCollector.\n */\n function getFeeTypePercentage(uint256 feeType) external view returns (uint256);\n\n /**\n * @dev Returns `feeType`'s maximum value.\n */\n function getFeeTypeMaximumPercentage(uint256 feeType) external view returns (uint256);\n\n /**\n * @dev Returns `feeType`'s name.\n */\n function getFeeTypeName(uint256 feeType) external view returns (string memory);\n}\n\nlibrary ProtocolFeeType {\n // This list is not exhaustive - more fee types can be added to the system. It is expected for this list to be\n // extended with new fee types as they are registered, to keep them all in one place and reduce\n // likelihood of user error.\n\n // solhint-disable private-vars-leading-underscore\n uint256 internal constant SWAP = 0;\n uint256 internal constant FLASH_LOAN = 1;\n uint256 internal constant YIELD = 2;\n uint256 internal constant AUM = 3;\n // solhint-enable private-vars-leading-underscore\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX 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 *\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\n * all math on `uint256` and `int256` and then downcasting.\n */\nlibrary SafeCast {\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 _require(value >> 255 == 0, Errors.SAFE_CAST_VALUE_CANT_FIT_INT256);\n return int256(value);\n }\n\n /**\n * @dev Converts an unsigned uint256 into an unsigned uint64.\n *\n * Requirements:\n *\n * - input must be less than or equal to maxUint64.\n */\n function toUint64(uint256 value) internal pure returns (uint64) {\n _require(value <= type(uint64).max, Errors.SAFE_CAST_VALUE_CANT_FIT_UINT64);\n return uint64(value);\n }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":9999},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"errors":[{"component":"general","errorCode":"2018","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol:77:5: Warning: Function state mutability can be restricted to pure\n function _getChainId() private view returns (uint256 chainId) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Function state mutability can be restricted to pure","severity":"warning","sourceLocation":{"end":3620,"file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol","start":3433},"type":"Warning"}],"sources":{"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","exportedSymbols":{"IAuthorizerAdaptor":[28]},"id":29,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:0"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":2,"nodeType":"ImportDirective","scope":29,"sourceUnit":1755,"src":"713:55:0","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"../vault/IVault.sol","id":3,"nodeType":"ImportDirective","scope":29,"sourceUnit":3372,"src":"769:29:0","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":1754,"src":"832:15:0","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$1754","typeString":"contract IAuthentication"}},"id":5,"nodeType":"InheritanceSpecifier","src":"832:15:0"}],"contractDependencies":[1754],"contractKind":"interface","fullyImplemented":false,"id":28,"linearizedBaseContracts":[28,1754],"name":"IAuthorizerAdaptor","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6,"nodeType":"StructuredDocumentation","src":"854:53:0","text":" @notice Returns the Balancer Vault"},"functionSelector":"8d928af8","id":11,"implemented":false,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":7,"nodeType":"ParameterList","parameters":[],"src":"929:2:0"},"returnParameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11,"src":"955:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":8,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"955:6:0","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"}],"src":"954:8:0"},"scope":28,"src":"912:51:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"969:49:0","text":" @notice Returns the Authorizer"},"functionSelector":"aaabadc5","id":17,"implemented":false,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":13,"nodeType":"ParameterList","parameters":[],"src":"1045:2:0"},"returnParameters":{"id":16,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17,"src":"1071:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2673","typeString":"contract IAuthorizer"},"typeName":{"id":14,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2673,"src":"1071:11:0","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2673","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"1070:13:0"},"scope":28,"src":"1023:61:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18,"nodeType":"StructuredDocumentation","src":"1090:331:0","text":" @notice Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\n @param target - Address of the contract to be called\n @param data - Calldata to be sent to the target contract\n @return The bytes encoded return value from the performed function call"},"functionSelector":"4036176a","id":27,"implemented":false,"kind":"function","modifiers":[],"name":"performAction","nodeType":"FunctionDefinition","parameters":{"id":23,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":27,"src":"1449:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19,"name":"address","nodeType":"ElementaryTypeName","src":"1449:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":27,"src":"1465:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":21,"name":"bytes","nodeType":"ElementaryTypeName","src":"1465:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1448:37:0"},"returnParameters":{"id":26,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27,"src":"1512:12:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":24,"name":"bytes","nodeType":"ElementaryTypeName","src":"1512:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1511:14:0"},"scope":28,"src":"1426:100:0","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":29,"src":"800:728:0"}],"src":"688:841:0"},"id":0},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol","exportedSymbols":{"IBalancerMinter":[175]},"id":176,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":30,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:1"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","file":"./IBalancerTokenAdmin.sol","id":31,"nodeType":"ImportDirective","scope":176,"sourceUnit":306,"src":"713:35:1","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","file":"./IGaugeController.sol","id":32,"nodeType":"ImportDirective","scope":176,"sourceUnit":374,"src":"749:32:1","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":175,"linearizedBaseContracts":[175],"name":"IBalancerMinter","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":40,"name":"Minted","nodeType":"EventDefinition","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":40,"src":"828:25:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33,"name":"address","nodeType":"ElementaryTypeName","src":"828:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":36,"indexed":false,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":40,"src":"855:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35,"name":"address","nodeType":"ElementaryTypeName","src":"855:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38,"indexed":false,"mutability":"mutable","name":"minted","nodeType":"VariableDeclaration","scope":40,"src":"870:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37,"name":"uint256","nodeType":"ElementaryTypeName","src":"870:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"827:58:1"},"src":"815:71:1"},{"documentation":{"id":41,"nodeType":"StructuredDocumentation","src":"892:79:1","text":" @notice Returns the address of the Balancer Governance Token"},"functionSelector":"c0039699","id":46,"implemented":false,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","parameters":{"id":42,"nodeType":"ParameterList","parameters":[],"src":"1001:2:1"},"returnParameters":{"id":45,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":46,"src":"1027:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":43,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1027:6:1","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1026:8:1"},"scope":175,"src":"976:59:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":47,"nodeType":"StructuredDocumentation","src":"1041:83:1","text":" @notice Returns the address of the Balancer Token Admin contract"},"functionSelector":"e6dec36f","id":52,"implemented":false,"kind":"function","modifiers":[],"name":"getBalancerTokenAdmin","nodeType":"FunctionDefinition","parameters":{"id":48,"nodeType":"ParameterList","parameters":[],"src":"1159:2:1"},"returnParameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":52,"src":"1185:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$305","typeString":"contract IBalancerTokenAdmin"},"typeName":{"id":49,"name":"IBalancerTokenAdmin","nodeType":"UserDefinedTypeName","referencedDeclaration":305,"src":"1185:19:1","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$305","typeString":"contract IBalancerTokenAdmin"}},"visibility":"internal"}],"src":"1184:21:1"},"scope":175,"src":"1129:77:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"1212:70:1","text":" @notice Returns the address of the Gauge Controller"},"functionSelector":"58de9ade","id":58,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeController","nodeType":"FunctionDefinition","parameters":{"id":54,"nodeType":"ParameterList","parameters":[],"src":"1314:2:1"},"returnParameters":{"id":57,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":58,"src":"1340:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$373","typeString":"contract IGaugeController"},"typeName":{"id":55,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":373,"src":"1340:16:1","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$373","typeString":"contract IGaugeController"}},"visibility":"internal"}],"src":"1339:18:1"},"scope":175,"src":"1287:71:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":59,"nodeType":"StructuredDocumentation","src":"1364:162:1","text":" @notice Mint everything which belongs to `msg.sender` and send to them\n @param gauge `LiquidityGauge` address to get mintable amount from"},"functionSelector":"6a627842","id":66,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":62,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":66,"src":"1545:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60,"name":"address","nodeType":"ElementaryTypeName","src":"1545:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1544:15:1"},"returnParameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":66,"src":"1578:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":63,"name":"uint256","nodeType":"ElementaryTypeName","src":"1578:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1577:9:1"},"scope":175,"src":"1531:56:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"1593:151:1","text":" @notice Mint everything which belongs to `msg.sender` across multiple gauges\n @param gauges List of `LiquidityGauge` addresses"},"functionSelector":"397ada21","id":75,"implemented":false,"kind":"function","modifiers":[],"name":"mintMany","nodeType":"FunctionDefinition","parameters":{"id":71,"nodeType":"ParameterList","parameters":[{"constant":false,"id":70,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":75,"src":"1767:25:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"1767:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":69,"nodeType":"ArrayTypeName","src":"1767:9:1","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1766:27:1"},"returnParameters":{"id":74,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":75,"src":"1812:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72,"name":"uint256","nodeType":"ElementaryTypeName","src":"1812:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1811:9:1"},"scope":175,"src":"1749:72:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":76,"nodeType":"StructuredDocumentation","src":"1827:256:1","text":" @notice Mint tokens for `user`\n @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n @param gauge `LiquidityGauge` address to get mintable amount from\n @param user Address to mint to"},"functionSelector":"7504a15d","id":85,"implemented":false,"kind":"function","modifiers":[],"name":"mintFor","nodeType":"FunctionDefinition","parameters":{"id":81,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":85,"src":"2105:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77,"name":"address","nodeType":"ElementaryTypeName","src":"2105:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":80,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":85,"src":"2120:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79,"name":"address","nodeType":"ElementaryTypeName","src":"2120:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2104:29:1"},"returnParameters":{"id":84,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":85,"src":"2152:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82,"name":"uint256","nodeType":"ElementaryTypeName","src":"2152:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2151:9:1"},"scope":175,"src":"2088:73:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":86,"nodeType":"StructuredDocumentation","src":"2167:262:1","text":" @notice Mint tokens for `user` across multiple gauges\n @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n @param gauges List of `LiquidityGauge` addresses\n @param user Address to mint to"},"functionSelector":"3b9f7384","id":96,"implemented":false,"kind":"function","modifiers":[],"name":"mintManyFor","nodeType":"FunctionDefinition","parameters":{"id":92,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":96,"src":"2455:25:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":87,"name":"address","nodeType":"ElementaryTypeName","src":"2455:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":88,"nodeType":"ArrayTypeName","src":"2455:9:1","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":91,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":96,"src":"2482:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90,"name":"address","nodeType":"ElementaryTypeName","src":"2482:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2454:41:1"},"returnParameters":{"id":95,"nodeType":"ParameterList","parameters":[{"constant":false,"id":94,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":96,"src":"2514:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":93,"name":"uint256","nodeType":"ElementaryTypeName","src":"2514:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2513:9:1"},"scope":175,"src":"2434:89:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":97,"nodeType":"StructuredDocumentation","src":"2529:84:1","text":" @notice The total number of tokens minted for `user` from `gauge`"},"functionSelector":"8b752bb0","id":106,"implemented":false,"kind":"function","modifiers":[],"name":"minted","nodeType":"FunctionDefinition","parameters":{"id":102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":99,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":106,"src":"2634:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":98,"name":"address","nodeType":"ElementaryTypeName","src":"2634:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":101,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":106,"src":"2648:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":100,"name":"address","nodeType":"ElementaryTypeName","src":"2648:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2633:29:1"},"returnParameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":106,"src":"2686:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":103,"name":"uint256","nodeType":"ElementaryTypeName","src":"2686:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2685:9:1"},"scope":175,"src":"2618:77:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"2701:81:1","text":" @notice Whether `minter` is approved to mint tokens for `user`"},"functionSelector":"3c543bc6","id":116,"implemented":false,"kind":"function","modifiers":[],"name":"getMinterApproval","nodeType":"FunctionDefinition","parameters":{"id":112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":116,"src":"2814:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"2814:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":111,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":116,"src":"2830:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":110,"name":"address","nodeType":"ElementaryTypeName","src":"2830:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2813:30:1"},"returnParameters":{"id":115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":116,"src":"2867:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":113,"name":"bool","nodeType":"ElementaryTypeName","src":"2867:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2866:6:1"},"scope":175,"src":"2787:86:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":117,"nodeType":"StructuredDocumentation","src":"2879:89:1","text":" @notice Set whether `minter` is approved to mint tokens on your behalf"},"functionSelector":"0de54ba0","id":124,"implemented":false,"kind":"function","modifiers":[],"name":"setMinterApproval","nodeType":"FunctionDefinition","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":124,"src":"3000:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":118,"name":"address","nodeType":"ElementaryTypeName","src":"3000:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":124,"src":"3016:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120,"name":"bool","nodeType":"ElementaryTypeName","src":"3016:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2999:31:1"},"returnParameters":{"id":123,"nodeType":"ParameterList","parameters":[],"src":"3039:0:1"},"scope":175,"src":"2973:67:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":125,"nodeType":"StructuredDocumentation","src":"3046:145:1","text":" @notice Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing\n them."},"functionSelector":"c6542794","id":142,"implemented":false,"kind":"function","modifiers":[],"name":"setMinterApprovalWithSignature","nodeType":"FunctionDefinition","parameters":{"id":140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":127,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":142,"src":"3245:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":126,"name":"address","nodeType":"ElementaryTypeName","src":"3245:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":129,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":142,"src":"3269:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":128,"name":"bool","nodeType":"ElementaryTypeName","src":"3269:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":131,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":142,"src":"3292:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":130,"name":"address","nodeType":"ElementaryTypeName","src":"3292:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":142,"src":"3314:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"3314:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":135,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":142,"src":"3340:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":134,"name":"uint8","nodeType":"ElementaryTypeName","src":"3340:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":137,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":142,"src":"3357:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":136,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3357:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":139,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":142,"src":"3376:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":138,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3376:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3235:156:1"},"returnParameters":{"id":141,"nodeType":"ParameterList","parameters":[],"src":"3400:0:1"},"scope":175,"src":"3196:205:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":143,"nodeType":"StructuredDocumentation","src":"3621:81:1","text":" @notice Whether `minter` is approved to mint tokens for `user`"},"functionSelector":"a0990033","id":152,"implemented":false,"kind":"function","modifiers":[],"name":"allowed_to_mint_for","nodeType":"FunctionDefinition","parameters":{"id":148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":145,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":152,"src":"3736:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":144,"name":"address","nodeType":"ElementaryTypeName","src":"3736:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":147,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":152,"src":"3752:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":146,"name":"address","nodeType":"ElementaryTypeName","src":"3752:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3735:30:1"},"returnParameters":{"id":151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":150,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":152,"src":"3789:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":149,"name":"bool","nodeType":"ElementaryTypeName","src":"3789:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3788:6:1"},"scope":175,"src":"3707:88:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":153,"nodeType":"StructuredDocumentation","src":"3801:247:1","text":" @notice Mint everything which belongs to `msg.sender` across multiple gauges\n @dev This function is not recommended as `mintMany()` is more flexible and gas efficient\n @param gauges List of `LiquidityGauge` addresses"},"functionSelector":"a51e1904","id":160,"implemented":false,"kind":"function","modifiers":[],"name":"mint_many","nodeType":"FunctionDefinition","parameters":{"id":158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":157,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":160,"src":"4072:26:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_calldata_ptr","typeString":"address[8]"},"typeName":{"baseType":{"id":154,"name":"address","nodeType":"ElementaryTypeName","src":"4072:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":156,"length":{"hexValue":"38","id":155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4080:1:1","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"ArrayTypeName","src":"4072:10:1","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_storage_ptr","typeString":"address[8]"}},"visibility":"internal"}],"src":"4071:28:1"},"returnParameters":{"id":159,"nodeType":"ParameterList","parameters":[],"src":"4108:0:1"},"scope":175,"src":"4053:56:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":161,"nodeType":"StructuredDocumentation","src":"4115:256:1","text":" @notice Mint tokens for `user`\n @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n @param gauge `LiquidityGauge` address to get mintable amount from\n @param user Address to mint to"},"functionSelector":"27f18ae3","id":168,"implemented":false,"kind":"function","modifiers":[],"name":"mint_for","nodeType":"FunctionDefinition","parameters":{"id":166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":163,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":168,"src":"4394:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":162,"name":"address","nodeType":"ElementaryTypeName","src":"4394:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":165,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":168,"src":"4409:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":164,"name":"address","nodeType":"ElementaryTypeName","src":"4409:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4393:29:1"},"returnParameters":{"id":167,"nodeType":"ParameterList","parameters":[],"src":"4431:0:1"},"scope":175,"src":"4376:56:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":169,"nodeType":"StructuredDocumentation","src":"4438:88:1","text":" @notice Toggle whether `minter` is approved to mint tokens for `user`"},"functionSelector":"dd289d60","id":174,"implemented":false,"kind":"function","modifiers":[],"name":"toggle_approve_mint","nodeType":"FunctionDefinition","parameters":{"id":172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":171,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":174,"src":"4560:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":170,"name":"address","nodeType":"ElementaryTypeName","src":"4560:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4559:16:1"},"returnParameters":{"id":173,"nodeType":"ParameterList","parameters":[],"src":"4584:0:1"},"scope":175,"src":"4531:54:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":176,"src":"783:3804:1"}],"src":"688:3900:1"},"id":1},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","exportedSymbols":{"IBalancerToken":[252]},"id":253,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":177,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:2"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":178,"nodeType":"ImportDirective","scope":253,"sourceUnit":1965,"src":"713:51:2","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":179,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"794:6:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":180,"nodeType":"InheritanceSpecifier","src":"794:6:2"}],"contractDependencies":[1964],"contractKind":"interface","fullyImplemented":false,"id":252,"linearizedBaseContracts":[252,1964],"name":"IBalancerToken","nodeType":"ContractDefinition","nodes":[{"functionSelector":"40c10f19","id":187,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":187,"src":"821:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":181,"name":"address","nodeType":"ElementaryTypeName","src":"821:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":184,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":187,"src":"833:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":183,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"820:28:2"},"returnParameters":{"id":186,"nodeType":"ParameterList","parameters":[],"src":"857:0:2"},"scope":252,"src":"807:51:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ca15c873","id":194,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleMemberCount","nodeType":"FunctionDefinition","parameters":{"id":190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":189,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":194,"src":"892:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":188,"name":"bytes32","nodeType":"ElementaryTypeName","src":"892:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"891:14:2"},"returnParameters":{"id":193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":192,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":194,"src":"929:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":191,"name":"uint256","nodeType":"ElementaryTypeName","src":"929:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"928:9:2"},"scope":252,"src":"864:74:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9010d07c","id":203,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleMember","nodeType":"FunctionDefinition","parameters":{"id":199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":196,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":203,"src":"967:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":195,"name":"bytes32","nodeType":"ElementaryTypeName","src":"967:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":198,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":203,"src":"981:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":197,"name":"uint256","nodeType":"ElementaryTypeName","src":"981:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"966:29:2"},"returnParameters":{"id":202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":201,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":203,"src":"1019:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":200,"name":"address","nodeType":"ElementaryTypeName","src":"1019:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1018:9:2"},"scope":252,"src":"944:84:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"91d14854","id":212,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nodeType":"FunctionDefinition","parameters":{"id":208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":205,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":212,"src":"1051:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":204,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1051:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":207,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":212,"src":"1065:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":206,"name":"address","nodeType":"ElementaryTypeName","src":"1065:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1050:31:2"},"returnParameters":{"id":211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":210,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":212,"src":"1105:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":209,"name":"bool","nodeType":"ElementaryTypeName","src":"1105:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1104:6:2"},"scope":252,"src":"1034:77:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"248a9ca3","id":219,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nodeType":"FunctionDefinition","parameters":{"id":215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":214,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":219,"src":"1139:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":213,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1139:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1138:14:2"},"returnParameters":{"id":218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":217,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":219,"src":"1176:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":216,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1176:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1175:9:2"},"scope":252,"src":"1117:68:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"2f2ff15d","id":226,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nodeType":"FunctionDefinition","parameters":{"id":224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":226,"src":"1210:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":220,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1210:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":223,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":226,"src":"1224:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":222,"name":"address","nodeType":"ElementaryTypeName","src":"1224:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1209:31:2"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[],"src":"1249:0:2"},"scope":252,"src":"1191:59:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d547741f","id":233,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nodeType":"FunctionDefinition","parameters":{"id":231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":228,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":233,"src":"1276:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":227,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1276:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":230,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":233,"src":"1290:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":229,"name":"address","nodeType":"ElementaryTypeName","src":"1290:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1275:31:2"},"returnParameters":{"id":232,"nodeType":"ParameterList","parameters":[],"src":"1315:0:2"},"scope":252,"src":"1256:60:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a217fddf","id":238,"implemented":false,"kind":"function","modifiers":[],"name":"DEFAULT_ADMIN_ROLE","nodeType":"FunctionDefinition","parameters":{"id":234,"nodeType":"ParameterList","parameters":[],"src":"1402:2:2"},"returnParameters":{"id":237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":236,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":238,"src":"1428:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":235,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1428:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1427:9:2"},"scope":252,"src":"1375:62:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d5391393","id":243,"implemented":false,"kind":"function","modifiers":[],"name":"MINTER_ROLE","nodeType":"FunctionDefinition","parameters":{"id":239,"nodeType":"ParameterList","parameters":[],"src":"1516:2:2"},"returnParameters":{"id":242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":241,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":243,"src":"1542:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":240,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1542:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1541:9:2"},"scope":252,"src":"1496:55:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7028e2cd","id":248,"implemented":false,"kind":"function","modifiers":[],"name":"SNAPSHOT_ROLE","nodeType":"FunctionDefinition","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"1632:2:2"},"returnParameters":{"id":247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":246,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":248,"src":"1658:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":245,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1658:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1657:9:2"},"scope":252,"src":"1610:57:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9711715a","id":251,"implemented":false,"kind":"function","modifiers":[],"name":"snapshot","nodeType":"FunctionDefinition","parameters":{"id":249,"nodeType":"ParameterList","parameters":[],"src":"1690:2:2"},"returnParameters":{"id":250,"nodeType":"ParameterList","parameters":[],"src":"1701:0:2"},"scope":252,"src":"1673:29:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":253,"src":"766:938:2"}],"src":"688:1017:2"},"id":2},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","exportedSymbols":{"IBalancerTokenAdmin":[305]},"id":306,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":254,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:3"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":255,"nodeType":"ImportDirective","scope":306,"sourceUnit":1755,"src":"713:55:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","file":"./IBalancerToken.sol","id":256,"nodeType":"ImportDirective","scope":306,"sourceUnit":253,"src":"770:30:3","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":257,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":1754,"src":"835:15:3","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$1754","typeString":"contract IAuthentication"}},"id":258,"nodeType":"InheritanceSpecifier","src":"835:15:3"}],"contractDependencies":[1754],"contractKind":"interface","fullyImplemented":false,"id":305,"linearizedBaseContracts":[305,1754],"name":"IBalancerTokenAdmin","nodeType":"ContractDefinition","nodes":[{"functionSelector":"4dbac733","id":263,"implemented":false,"kind":"function","modifiers":[],"name":"INITIAL_RATE","nodeType":"FunctionDefinition","parameters":{"id":259,"nodeType":"ParameterList","parameters":[],"src":"921:2:3"},"returnParameters":{"id":262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":261,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":263,"src":"947:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":260,"name":"uint256","nodeType":"ElementaryTypeName","src":"947:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"946:9:3"},"scope":305,"src":"900:56:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b87b5616","id":268,"implemented":false,"kind":"function","modifiers":[],"name":"RATE_REDUCTION_TIME","nodeType":"FunctionDefinition","parameters":{"id":264,"nodeType":"ParameterList","parameters":[],"src":"990:2:3"},"returnParameters":{"id":267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":266,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":268,"src":"1016:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":265,"name":"uint256","nodeType":"ElementaryTypeName","src":"1016:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1015:9:3"},"scope":305,"src":"962:63:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"21609bbf","id":273,"implemented":false,"kind":"function","modifiers":[],"name":"RATE_REDUCTION_COEFFICIENT","nodeType":"FunctionDefinition","parameters":{"id":269,"nodeType":"ParameterList","parameters":[],"src":"1066:2:3"},"returnParameters":{"id":272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":271,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":273,"src":"1092:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":270,"name":"uint256","nodeType":"ElementaryTypeName","src":"1092:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1091:9:3"},"scope":305,"src":"1031:70:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7efad8e0","id":278,"implemented":false,"kind":"function","modifiers":[],"name":"RATE_DENOMINATOR","nodeType":"FunctionDefinition","parameters":{"id":274,"nodeType":"ParameterList","parameters":[],"src":"1132:2:3"},"returnParameters":{"id":277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":276,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":278,"src":"1158:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":275,"name":"uint256","nodeType":"ElementaryTypeName","src":"1158:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1157:9:3"},"scope":305,"src":"1107:60:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":279,"nodeType":"StructuredDocumentation","src":"1216:79:3","text":" @notice Returns the address of the Balancer Governance Token"},"functionSelector":"c0039699","id":284,"implemented":false,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","parameters":{"id":280,"nodeType":"ParameterList","parameters":[],"src":"1325:2:3"},"returnParameters":{"id":283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":282,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":284,"src":"1351:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"},"typeName":{"id":281,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":252,"src":"1351:14:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"1350:16:3"},"scope":305,"src":"1300:67:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0f15f4c0","id":287,"implemented":false,"kind":"function","modifiers":[],"name":"activate","nodeType":"FunctionDefinition","parameters":{"id":285,"nodeType":"ParameterList","parameters":[],"src":"1390:2:3"},"returnParameters":{"id":286,"nodeType":"ParameterList","parameters":[],"src":"1401:0:3"},"scope":305,"src":"1373:29:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2c4e722e","id":292,"implemented":false,"kind":"function","modifiers":[],"name":"rate","nodeType":"FunctionDefinition","parameters":{"id":288,"nodeType":"ParameterList","parameters":[],"src":"1421:2:3"},"returnParameters":{"id":291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":292,"src":"1447:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":289,"name":"uint256","nodeType":"ElementaryTypeName","src":"1447:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1446:9:3"},"scope":305,"src":"1408:48:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a228bced","id":297,"implemented":false,"kind":"function","modifiers":[],"name":"startEpochTimeWrite","nodeType":"FunctionDefinition","parameters":{"id":293,"nodeType":"ParameterList","parameters":[],"src":"1490:2:3"},"returnParameters":{"id":296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":295,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":297,"src":"1511:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":294,"name":"uint256","nodeType":"ElementaryTypeName","src":"1511:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1510:9:3"},"scope":305,"src":"1462:58:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"40c10f19","id":304,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":299,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":304,"src":"1540:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":298,"name":"address","nodeType":"ElementaryTypeName","src":"1540:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":301,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":304,"src":"1552:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":300,"name":"uint256","nodeType":"ElementaryTypeName","src":"1552:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1539:28:3"},"returnParameters":{"id":303,"nodeType":"ParameterList","parameters":[],"src":"1576:0:3"},"scope":305,"src":"1526:51:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":306,"src":"802:777:3"}],"src":"688:892:3"},"id":3},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","exportedSymbols":{"IGaugeController":[373]},"id":374,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":307,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:4"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":308,"nodeType":"ImportDirective","scope":374,"sourceUnit":1965,"src":"713:51:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","file":"./IAuthorizerAdaptor.sol","id":309,"nodeType":"ImportDirective","scope":374,"sourceUnit":29,"src":"766:34:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","file":"./IVotingEscrow.sol","id":310,"nodeType":"ImportDirective","scope":374,"sourceUnit":614,"src":"801:29:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":373,"linearizedBaseContracts":[373],"name":"IGaugeController","nodeType":"ContractDefinition","nodes":[{"functionSelector":"615e5237","id":315,"implemented":false,"kind":"function","modifiers":[],"name":"checkpoint_gauge","nodeType":"FunctionDefinition","parameters":{"id":313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":312,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":315,"src":"1069:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":311,"name":"address","nodeType":"ElementaryTypeName","src":"1069:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1068:15:4"},"returnParameters":{"id":314,"nodeType":"ParameterList","parameters":[],"src":"1092:0:4"},"scope":373,"src":"1043:50:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d3078c94","id":324,"implemented":false,"kind":"function","modifiers":[],"name":"gauge_relative_weight","nodeType":"FunctionDefinition","parameters":{"id":320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":317,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":324,"src":"1130:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":316,"name":"address","nodeType":"ElementaryTypeName","src":"1130:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":319,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":324,"src":"1145:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":318,"name":"uint256","nodeType":"ElementaryTypeName","src":"1145:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1129:29:4"},"returnParameters":{"id":323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":322,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":324,"src":"1182:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":321,"name":"uint256","nodeType":"ElementaryTypeName","src":"1182:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1181:9:4"},"scope":373,"src":"1099:92:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"dfe05031","id":329,"implemented":false,"kind":"function","modifiers":[],"name":"voting_escrow","nodeType":"FunctionDefinition","parameters":{"id":325,"nodeType":"ParameterList","parameters":[],"src":"1219:2:4"},"returnParameters":{"id":328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":327,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":329,"src":"1245:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$613","typeString":"contract IVotingEscrow"},"typeName":{"id":326,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":613,"src":"1245:13:4","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$613","typeString":"contract IVotingEscrow"}},"visibility":"internal"}],"src":"1244:15:4"},"scope":373,"src":"1197:63:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"fc0c546a","id":334,"implemented":false,"kind":"function","modifiers":[],"name":"token","nodeType":"FunctionDefinition","parameters":{"id":330,"nodeType":"ParameterList","parameters":[],"src":"1280:2:4"},"returnParameters":{"id":333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":332,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":334,"src":"1306:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":331,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1306:6:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1305:8:4"},"scope":373,"src":"1266:48:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"92d0d232","id":341,"implemented":false,"kind":"function","modifiers":[],"name":"add_type","nodeType":"FunctionDefinition","parameters":{"id":339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":336,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":341,"src":"1338:20:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":335,"name":"string","nodeType":"ElementaryTypeName","src":"1338:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":338,"mutability":"mutable","name":"weight","nodeType":"VariableDeclaration","scope":341,"src":"1360:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":337,"name":"uint256","nodeType":"ElementaryTypeName","src":"1360:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1337:38:4"},"returnParameters":{"id":340,"nodeType":"ParameterList","parameters":[],"src":"1384:0:4"},"scope":373,"src":"1320:65:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"db1ca260","id":348,"implemented":false,"kind":"function","modifiers":[],"name":"change_type_weight","nodeType":"FunctionDefinition","parameters":{"id":346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":343,"mutability":"mutable","name":"typeId","nodeType":"VariableDeclaration","scope":348,"src":"1419:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":342,"name":"int128","nodeType":"ElementaryTypeName","src":"1419:6:4","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":345,"mutability":"mutable","name":"weight","nodeType":"VariableDeclaration","scope":348,"src":"1434:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":344,"name":"uint256","nodeType":"ElementaryTypeName","src":"1434:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1418:31:4"},"returnParameters":{"id":347,"nodeType":"ParameterList","parameters":[],"src":"1458:0:4"},"scope":373,"src":"1391:68:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3a04f900","id":355,"implemented":false,"kind":"function","modifiers":[],"name":"add_gauge","nodeType":"FunctionDefinition","parameters":{"id":353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":350,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":355,"src":"1484:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":349,"name":"address","nodeType":"ElementaryTypeName","src":"1484:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":352,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":355,"src":"1499:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":351,"name":"int128","nodeType":"ElementaryTypeName","src":"1499:6:4","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1483:33:4"},"returnParameters":{"id":354,"nodeType":"ParameterList","parameters":[],"src":"1525:0:4"},"scope":373,"src":"1465:61:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"9fba03a1","id":360,"implemented":false,"kind":"function","modifiers":[],"name":"n_gauge_types","nodeType":"FunctionDefinition","parameters":{"id":356,"nodeType":"ParameterList","parameters":[],"src":"1554:2:4"},"returnParameters":{"id":359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":358,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":360,"src":"1580:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":357,"name":"int128","nodeType":"ElementaryTypeName","src":"1580:6:4","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1579:8:4"},"scope":373,"src":"1532:56:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"3f9095b7","id":367,"implemented":false,"kind":"function","modifiers":[],"name":"gauge_types","nodeType":"FunctionDefinition","parameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":362,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":367,"src":"1615:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":361,"name":"address","nodeType":"ElementaryTypeName","src":"1615:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1614:15:4"},"returnParameters":{"id":366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":365,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":367,"src":"1653:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":364,"name":"int128","nodeType":"ElementaryTypeName","src":"1653:6:4","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1652:8:4"},"scope":373,"src":"1594:67:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"f851a440","id":372,"implemented":false,"kind":"function","modifiers":[],"name":"admin","nodeType":"FunctionDefinition","parameters":{"id":368,"nodeType":"ParameterList","parameters":[],"src":"1681:2:4"},"returnParameters":{"id":371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":370,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":372,"src":"1707:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$28","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":369,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":28,"src":"1707:18:4","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$28","typeString":"contract IAuthorizerAdaptor"}},"visibility":"internal"}],"src":"1706:20:4"},"scope":373,"src":"1667:60:4","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":374,"src":"1010:719:4"}],"src":"688:1042:4"},"id":4},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","exportedSymbols":{"ILiquidityGauge":[430]},"id":431,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":375,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:5"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":430,"linearizedBaseContracts":[430],"name":"ILiquidityGauge","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":379,"name":"RelativeWeightCapChanged","nodeType":"EventDefinition","parameters":{"id":378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":377,"indexed":false,"mutability":"mutable","name":"new_relative_weight_cap","nodeType":"VariableDeclaration","scope":379,"src":"1051:31:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":376,"name":"uint256","nodeType":"ElementaryTypeName","src":"1051:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1050:33:5"},"src":"1020:64:5"},{"documentation":{"id":380,"nodeType":"StructuredDocumentation","src":"1090:201:5","text":" @notice Returns BAL liquidity emissions calculated during checkpoints for the given user.\n @param user User address.\n @return uint256 BAL amount to issue for the address."},"functionSelector":"09400707","id":387,"implemented":false,"kind":"function","modifiers":[],"name":"integrate_fraction","nodeType":"FunctionDefinition","parameters":{"id":383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":382,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":387,"src":"1324:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":381,"name":"address","nodeType":"ElementaryTypeName","src":"1324:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1323:14:5"},"returnParameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":385,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":387,"src":"1361:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":384,"name":"uint256","nodeType":"ElementaryTypeName","src":"1361:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1360:9:5"},"scope":430,"src":"1296:74:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":388,"nodeType":"StructuredDocumentation","src":"1376:130:5","text":" @notice Record a checkpoint for a given user.\n @param user User address.\n @return bool Always true."},"functionSelector":"4b820093","id":395,"implemented":false,"kind":"function","modifiers":[],"name":"user_checkpoint","nodeType":"FunctionDefinition","parameters":{"id":391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":390,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":395,"src":"1536:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":389,"name":"address","nodeType":"ElementaryTypeName","src":"1536:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1535:14:5"},"returnParameters":{"id":394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":393,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":395,"src":"1568:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":392,"name":"bool","nodeType":"ElementaryTypeName","src":"1568:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1567:6:5"},"scope":430,"src":"1511:63:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":396,"nodeType":"StructuredDocumentation","src":"1580:76:5","text":" @notice Returns true if gauge is killed; false otherwise."},"functionSelector":"9c868ac0","id":401,"implemented":false,"kind":"function","modifiers":[],"name":"is_killed","nodeType":"FunctionDefinition","parameters":{"id":397,"nodeType":"ParameterList","parameters":[],"src":"1679:2:5"},"returnParameters":{"id":400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":399,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":401,"src":"1705:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":398,"name":"bool","nodeType":"ElementaryTypeName","src":"1705:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1704:6:5"},"scope":430,"src":"1661:50:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":402,"nodeType":"StructuredDocumentation","src":"1717:65:5","text":" @notice Kills the gauge so it cannot mint BAL."},"functionSelector":"ab8f0945","id":405,"implemented":false,"kind":"function","modifiers":[],"name":"killGauge","nodeType":"FunctionDefinition","parameters":{"id":403,"nodeType":"ParameterList","parameters":[],"src":"1805:2:5"},"returnParameters":{"id":404,"nodeType":"ParameterList","parameters":[],"src":"1816:0:5"},"scope":430,"src":"1787:30:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":406,"nodeType":"StructuredDocumentation","src":"1823:70:5","text":" @notice Unkills the gauge so it can mint BAL again."},"functionSelector":"d34fb267","id":409,"implemented":false,"kind":"function","modifiers":[],"name":"unkillGauge","nodeType":"FunctionDefinition","parameters":{"id":407,"nodeType":"ParameterList","parameters":[],"src":"1918:2:5"},"returnParameters":{"id":408,"nodeType":"ParameterList","parameters":[],"src":"1929:0:5"},"scope":430,"src":"1898:32:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":410,"nodeType":"StructuredDocumentation","src":"1936:221:5","text":" @notice Sets a new relative weight cap for the gauge.\n The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\n @param relativeWeightCap New relative weight cap."},"functionSelector":"10d3eb04","id":415,"implemented":false,"kind":"function","modifiers":[],"name":"setRelativeWeightCap","nodeType":"FunctionDefinition","parameters":{"id":413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":412,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":415,"src":"2192:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":411,"name":"uint256","nodeType":"ElementaryTypeName","src":"2192:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2191:27:5"},"returnParameters":{"id":414,"nodeType":"ParameterList","parameters":[],"src":"2227:0:5"},"scope":430,"src":"2162:66:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":416,"nodeType":"StructuredDocumentation","src":"2234:70:5","text":" @notice Gets the relative weight cap for the gauge."},"functionSelector":"83f5c39b","id":421,"implemented":false,"kind":"function","modifiers":[],"name":"getRelativeWeightCap","nodeType":"FunctionDefinition","parameters":{"id":417,"nodeType":"ParameterList","parameters":[],"src":"2338:2:5"},"returnParameters":{"id":420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":419,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":421,"src":"2364:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":418,"name":"uint256","nodeType":"ElementaryTypeName","src":"2364:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2363:9:5"},"scope":430,"src":"2309:64:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":422,"nodeType":"StructuredDocumentation","src":"2379:178:5","text":" @notice Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\n @param time Timestamp in the past or present."},"functionSelector":"14e956f5","id":429,"implemented":false,"kind":"function","modifiers":[],"name":"getCappedRelativeWeight","nodeType":"FunctionDefinition","parameters":{"id":425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":424,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":429,"src":"2595:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":423,"name":"uint256","nodeType":"ElementaryTypeName","src":"2595:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2594:14:5"},"returnParameters":{"id":428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":427,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":429,"src":"2632:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":426,"name":"uint256","nodeType":"ElementaryTypeName","src":"2632:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2631:9:5"},"scope":430,"src":"2562:79:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":431,"src":"936:1707:5"}],"src":"688:1956:5"},"id":5},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","exportedSymbols":{"IRewardTokenDistributor":[506]},"id":507,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":432,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:6"},{"id":433,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:6"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":434,"nodeType":"ImportDirective","scope":507,"sourceUnit":1965,"src":"747:51:6","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":506,"linearizedBaseContracts":[506],"name":"IRewardTokenDistributor","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IRewardTokenDistributor.Reward","id":447,"members":[{"constant":false,"id":436,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":447,"src":"1062:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":435,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1062:6:6","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":438,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":447,"src":"1084:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":437,"name":"address","nodeType":"ElementaryTypeName","src":"1084:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":440,"mutability":"mutable","name":"period_finish","nodeType":"VariableDeclaration","scope":447,"src":"1113:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":439,"name":"uint256","nodeType":"ElementaryTypeName","src":"1113:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":442,"mutability":"mutable","name":"rate","nodeType":"VariableDeclaration","scope":447,"src":"1144:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":441,"name":"uint256","nodeType":"ElementaryTypeName","src":"1144:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":444,"mutability":"mutable","name":"last_update","nodeType":"VariableDeclaration","scope":447,"src":"1166:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":443,"name":"uint256","nodeType":"ElementaryTypeName","src":"1166:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":446,"mutability":"mutable","name":"integral","nodeType":"VariableDeclaration","scope":447,"src":"1195:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":445,"name":"uint256","nodeType":"ElementaryTypeName","src":"1195:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Reward","nodeType":"StructDefinition","scope":506,"src":"1038:180:6","visibility":"public"},{"functionSelector":"54c49fe9","id":454,"implemented":false,"kind":"function","modifiers":[],"name":"reward_tokens","nodeType":"FunctionDefinition","parameters":{"id":450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":449,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":454,"src":"1247:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"1247:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1246:15:6"},"returnParameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":452,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":454,"src":"1285:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":451,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1285:6:6","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1284:8:6"},"scope":506,"src":"1224:69:6","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"48e9c65e","id":461,"implemented":false,"kind":"function","modifiers":[],"name":"reward_data","nodeType":"FunctionDefinition","parameters":{"id":457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":456,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":461,"src":"1320:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":455,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1320:6:6","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1319:14:6"},"returnParameters":{"id":460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":459,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":461,"src":"1357:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$447_memory_ptr","typeString":"struct IRewardTokenDistributor.Reward"},"typeName":{"id":458,"name":"Reward","nodeType":"UserDefinedTypeName","referencedDeclaration":447,"src":"1357:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$447_storage_ptr","typeString":"struct IRewardTokenDistributor.Reward"}},"visibility":"internal"}],"src":"1356:15:6"},"scope":506,"src":"1299:73:6","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"84e9bd7e","id":466,"implemented":false,"kind":"function","modifiers":[],"name":"claim_rewards","nodeType":"FunctionDefinition","parameters":{"id":464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":463,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":466,"src":"1401:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":462,"name":"address","nodeType":"ElementaryTypeName","src":"1401:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1400:14:6"},"returnParameters":{"id":465,"nodeType":"ParameterList","parameters":[],"src":"1423:0:6"},"scope":506,"src":"1378:46:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"e8de0d4d","id":473,"implemented":false,"kind":"function","modifiers":[],"name":"add_reward","nodeType":"FunctionDefinition","parameters":{"id":471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":468,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":473,"src":"1450:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":467,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1450:6:6","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":470,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":473,"src":"1470:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":469,"name":"address","nodeType":"ElementaryTypeName","src":"1470:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1449:41:6"},"returnParameters":{"id":472,"nodeType":"ParameterList","parameters":[],"src":"1499:0:6"},"scope":506,"src":"1430:70:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"058a3a24","id":480,"implemented":false,"kind":"function","modifiers":[],"name":"set_reward_distributor","nodeType":"FunctionDefinition","parameters":{"id":478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":480,"src":"1538:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":474,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1538:6:6","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":477,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":480,"src":"1558:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":476,"name":"address","nodeType":"ElementaryTypeName","src":"1558:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1537:41:6"},"returnParameters":{"id":479,"nodeType":"ParameterList","parameters":[],"src":"1587:0:6"},"scope":506,"src":"1506:82:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"93f7aa67","id":487,"implemented":false,"kind":"function","modifiers":[],"name":"deposit_reward_token","nodeType":"FunctionDefinition","parameters":{"id":485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":482,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":487,"src":"1624:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":481,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1624:6:6","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":484,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":487,"src":"1644:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":483,"name":"uint256","nodeType":"ElementaryTypeName","src":"1644:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1623:36:6"},"returnParameters":{"id":486,"nodeType":"ParameterList","parameters":[],"src":"1668:0:6"},"scope":506,"src":"1594:75:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"33fd6f74","id":496,"implemented":false,"kind":"function","modifiers":[],"name":"claimable_reward","nodeType":"FunctionDefinition","parameters":{"id":492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":489,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":496,"src":"1701:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":488,"name":"address","nodeType":"ElementaryTypeName","src":"1701:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":491,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":496,"src":"1722:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":490,"name":"address","nodeType":"ElementaryTypeName","src":"1722:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1700:35:6"},"returnParameters":{"id":495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":494,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":496,"src":"1759:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":493,"name":"uint256","nodeType":"ElementaryTypeName","src":"1759:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1758:9:6"},"scope":506,"src":"1675:93:6","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"59b7e409","id":505,"implemented":false,"kind":"function","modifiers":[],"name":"claimable_reward_write","nodeType":"FunctionDefinition","parameters":{"id":501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":498,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":505,"src":"1806:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":497,"name":"address","nodeType":"ElementaryTypeName","src":"1806:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":500,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":505,"src":"1827:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":499,"name":"address","nodeType":"ElementaryTypeName","src":"1827:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1805:35:6"},"returnParameters":{"id":504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":503,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":505,"src":"1859:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":502,"name":"uint256","nodeType":"ElementaryTypeName","src":"1859:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1858:9:6"},"scope":506,"src":"1774:94:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":507,"src":"998:872:6"}],"src":"688:1183:6"},"id":6},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","exportedSymbols":{"IStakingLiquidityGauge":[543]},"id":544,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":508,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:7"},{"id":509,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:7"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":510,"nodeType":"ImportDirective","scope":544,"sourceUnit":1965,"src":"747:51:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"./ILiquidityGauge.sol","id":511,"nodeType":"ImportDirective","scope":544,"sourceUnit":431,"src":"800:31:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","file":"./IRewardTokenDistributor.sol","id":512,"nodeType":"ImportDirective","scope":544,"sourceUnit":507,"src":"832:39:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":513,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":506,"src":"1107:23:7","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$506","typeString":"contract IRewardTokenDistributor"}},"id":514,"nodeType":"InheritanceSpecifier","src":"1107:23:7"},{"baseName":{"id":515,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":430,"src":"1132:15:7","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$430","typeString":"contract ILiquidityGauge"}},"id":516,"nodeType":"InheritanceSpecifier","src":"1132:15:7"},{"baseName":{"id":517,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1149:6:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":518,"nodeType":"InheritanceSpecifier","src":"1149:6:7"}],"contractDependencies":[430,506,1964],"contractKind":"interface","fullyImplemented":false,"id":543,"linearizedBaseContracts":[543,1964,430,506],"name":"IStakingLiquidityGauge","nodeType":"ContractDefinition","nodes":[{"functionSelector":"cd6dc687","id":525,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":520,"mutability":"mutable","name":"lpToken","nodeType":"VariableDeclaration","scope":525,"src":"1182:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":519,"name":"address","nodeType":"ElementaryTypeName","src":"1182:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":522,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":525,"src":"1199:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":521,"name":"uint256","nodeType":"ElementaryTypeName","src":"1199:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1181:44:7"},"returnParameters":{"id":524,"nodeType":"ParameterList","parameters":[],"src":"1234:0:7"},"scope":543,"src":"1162:73:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"82c63066","id":530,"implemented":false,"kind":"function","modifiers":[],"name":"lp_token","nodeType":"FunctionDefinition","parameters":{"id":526,"nodeType":"ParameterList","parameters":[],"src":"1258:2:7"},"returnParameters":{"id":529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":528,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":530,"src":"1284:6:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":527,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1284:6:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1283:8:7"},"scope":543,"src":"1241:51:7","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6e553f65","id":537,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":532,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":537,"src":"1315:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":531,"name":"uint256","nodeType":"ElementaryTypeName","src":"1315:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":534,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":537,"src":"1330:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":533,"name":"address","nodeType":"ElementaryTypeName","src":"1330:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1314:34:7"},"returnParameters":{"id":536,"nodeType":"ParameterList","parameters":[],"src":"1357:0:7"},"scope":543,"src":"1298:60:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2e1a7d4d","id":542,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":539,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":542,"src":"1382:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":538,"name":"uint256","nodeType":"ElementaryTypeName","src":"1382:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1381:15:7"},"returnParameters":{"id":541,"nodeType":"ParameterList","parameters":[],"src":"1405:0:7"},"scope":543,"src":"1364:42:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":544,"src":"1071:337:7"}],"src":"688:721:7"},"id":7},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","exportedSymbols":{"IVotingEscrow":[613]},"id":614,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":545,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:8"},{"id":546,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:8"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","file":"./IAuthorizerAdaptor.sol","id":547,"nodeType":"ImportDirective","scope":614,"sourceUnit":29,"src":"747:34:8","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":613,"linearizedBaseContracts":[613],"name":"IVotingEscrow","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IVotingEscrow.Point","id":556,"members":[{"constant":false,"id":549,"mutability":"mutable","name":"bias","nodeType":"VariableDeclaration","scope":556,"src":"1014:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":548,"name":"int128","nodeType":"ElementaryTypeName","src":"1014:6:8","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":551,"mutability":"mutable","name":"slope","nodeType":"VariableDeclaration","scope":556,"src":"1035:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":550,"name":"int128","nodeType":"ElementaryTypeName","src":"1035:6:8","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":553,"mutability":"mutable","name":"ts","nodeType":"VariableDeclaration","scope":556,"src":"1075:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":552,"name":"uint256","nodeType":"ElementaryTypeName","src":"1075:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":555,"mutability":"mutable","name":"blk","nodeType":"VariableDeclaration","scope":556,"src":"1095:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":554,"name":"uint256","nodeType":"ElementaryTypeName","src":"1095:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Point","nodeType":"StructDefinition","scope":613,"src":"991:131:8","visibility":"public"},{"functionSelector":"900cf0cf","id":561,"implemented":false,"kind":"function","modifiers":[],"name":"epoch","nodeType":"FunctionDefinition","parameters":{"id":557,"nodeType":"ParameterList","parameters":[],"src":"1142:2:8"},"returnParameters":{"id":560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":559,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":561,"src":"1168:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":558,"name":"uint256","nodeType":"ElementaryTypeName","src":"1168:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1167:9:8"},"scope":613,"src":"1128:49:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"bd85b039","id":568,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":563,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":568,"src":"1204:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":562,"name":"uint256","nodeType":"ElementaryTypeName","src":"1204:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1203:19:8"},"returnParameters":{"id":567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":566,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":568,"src":"1246:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":565,"name":"uint256","nodeType":"ElementaryTypeName","src":"1246:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1245:9:8"},"scope":613,"src":"1183:72:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"010ae757","id":575,"implemented":false,"kind":"function","modifiers":[],"name":"user_point_epoch","nodeType":"FunctionDefinition","parameters":{"id":571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":570,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":575,"src":"1287:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":569,"name":"address","nodeType":"ElementaryTypeName","src":"1287:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1286:14:8"},"returnParameters":{"id":574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":573,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":575,"src":"1324:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":572,"name":"uint256","nodeType":"ElementaryTypeName","src":"1324:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1323:9:8"},"scope":613,"src":"1261:72:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d1febfb9","id":582,"implemented":false,"kind":"function","modifiers":[],"name":"point_history","nodeType":"FunctionDefinition","parameters":{"id":578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":577,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":582,"src":"1362:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":576,"name":"uint256","nodeType":"ElementaryTypeName","src":"1362:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1361:19:8"},"returnParameters":{"id":581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":580,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":582,"src":"1404:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$556_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":579,"name":"Point","nodeType":"UserDefinedTypeName","referencedDeclaration":556,"src":"1404:5:8","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$556_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"1403:14:8"},"scope":613,"src":"1339:79:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"28d09d47","id":591,"implemented":false,"kind":"function","modifiers":[],"name":"user_point_history","nodeType":"FunctionDefinition","parameters":{"id":587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":584,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":591,"src":"1452:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":583,"name":"address","nodeType":"ElementaryTypeName","src":"1452:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":586,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":591,"src":"1466:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":585,"name":"uint256","nodeType":"ElementaryTypeName","src":"1466:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1451:33:8"},"returnParameters":{"id":590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":589,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":591,"src":"1508:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$556_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":588,"name":"Point","nodeType":"UserDefinedTypeName","referencedDeclaration":556,"src":"1508:5:8","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$556_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"1507:14:8"},"scope":613,"src":"1424:98:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c2c4c5c1","id":594,"implemented":false,"kind":"function","modifiers":[],"name":"checkpoint","nodeType":"FunctionDefinition","parameters":{"id":592,"nodeType":"ParameterList","parameters":[],"src":"1547:2:8"},"returnParameters":{"id":593,"nodeType":"ParameterList","parameters":[],"src":"1558:0:8"},"scope":613,"src":"1528:31:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f851a440","id":599,"implemented":false,"kind":"function","modifiers":[],"name":"admin","nodeType":"FunctionDefinition","parameters":{"id":595,"nodeType":"ParameterList","parameters":[],"src":"1579:2:8"},"returnParameters":{"id":598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":597,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":599,"src":"1605:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$28","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":596,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":28,"src":"1605:18:8","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$28","typeString":"contract IAuthorizerAdaptor"}},"visibility":"internal"}],"src":"1604:20:8"},"scope":613,"src":"1565:60:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7175d4f7","id":604,"implemented":false,"kind":"function","modifiers":[],"name":"smart_wallet_checker","nodeType":"FunctionDefinition","parameters":{"id":600,"nodeType":"ParameterList","parameters":[],"src":"1660:2:8"},"returnParameters":{"id":603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":602,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":604,"src":"1686:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":601,"name":"address","nodeType":"ElementaryTypeName","src":"1686:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1685:9:8"},"scope":613,"src":"1631:64:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"57f901e2","id":609,"implemented":false,"kind":"function","modifiers":[],"name":"commit_smart_wallet_checker","nodeType":"FunctionDefinition","parameters":{"id":607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":606,"mutability":"mutable","name":"newSmartWalletChecker","nodeType":"VariableDeclaration","scope":609,"src":"1738:29:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":605,"name":"address","nodeType":"ElementaryTypeName","src":"1738:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1737:31:8"},"returnParameters":{"id":608,"nodeType":"ParameterList","parameters":[],"src":"1777:0:8"},"scope":613,"src":"1701:77:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8e5b490f","id":612,"implemented":false,"kind":"function","modifiers":[],"name":"apply_smart_wallet_checker","nodeType":"FunctionDefinition","parameters":{"id":610,"nodeType":"ParameterList","parameters":[],"src":"1819:2:8"},"returnParameters":{"id":611,"nodeType":"ParameterList","parameters":[],"src":"1830:0:8"},"scope":613,"src":"1784:47:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":614,"src":"961:872:8"}],"src":"688:1146:8"},"id":8},"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol","exportedSymbols":{"IButtonWrapper":[752]},"id":753,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":615,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:9"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":752,"linearizedBaseContracts":[752],"name":"IButtonWrapper","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":616,"nodeType":"StructuredDocumentation","src":"1221:234:9","text":"@notice Transfers underlying tokens from {msg.sender} to the contract and\n mints wrapper tokens.\n @param amount The amount of wrapper tokens to mint.\n @return The amount of underlying tokens deposited."},"functionSelector":"a0712d68","id":623,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":618,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":623,"src":"1474:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":617,"name":"uint256","nodeType":"ElementaryTypeName","src":"1474:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1473:16:9"},"returnParameters":{"id":622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":621,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":623,"src":"1508:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":620,"name":"uint256","nodeType":"ElementaryTypeName","src":"1508:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1507:9:9"},"scope":752,"src":"1460:57:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":624,"nodeType":"StructuredDocumentation","src":"1523:306:9","text":"@notice Transfers underlying tokens from {msg.sender} to the contract and\n mints wrapper tokens to the specified beneficiary.\n @param to The beneficiary account.\n @param amount The amount of wrapper tokens to mint.\n @return The amount of underlying tokens deposited."},"functionSelector":"da1919b3","id":633,"implemented":false,"kind":"function","modifiers":[],"name":"mintFor","nodeType":"FunctionDefinition","parameters":{"id":629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":626,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":633,"src":"1851:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":625,"name":"address","nodeType":"ElementaryTypeName","src":"1851:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":628,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":633,"src":"1863:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":627,"name":"uint256","nodeType":"ElementaryTypeName","src":"1863:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1850:28:9"},"returnParameters":{"id":632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":631,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":633,"src":"1897:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":630,"name":"uint256","nodeType":"ElementaryTypeName","src":"1897:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1896:9:9"},"scope":752,"src":"1834:72:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":634,"nodeType":"StructuredDocumentation","src":"1912:227:9","text":"@notice Burns wrapper tokens from {msg.sender} and transfers\n the underlying tokens back.\n @param amount The amount of wrapper tokens to burn.\n @return The amount of underlying tokens withdrawn."},"functionSelector":"42966c68","id":641,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":636,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":641,"src":"2158:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":635,"name":"uint256","nodeType":"ElementaryTypeName","src":"2158:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2157:16:9"},"returnParameters":{"id":640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":639,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":641,"src":"2192:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":638,"name":"uint256","nodeType":"ElementaryTypeName","src":"2192:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2191:9:9"},"scope":752,"src":"2144:57:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":642,"nodeType":"StructuredDocumentation","src":"2207:294:9","text":"@notice Burns wrapper tokens from {msg.sender} and transfers\n the underlying tokens to the specified beneficiary.\n @param to The beneficiary account.\n @param amount The amount of wrapper tokens to burn.\n @return The amount of underlying tokens withdrawn."},"functionSelector":"ea785a5e","id":651,"implemented":false,"kind":"function","modifiers":[],"name":"burnTo","nodeType":"FunctionDefinition","parameters":{"id":647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":644,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":651,"src":"2522:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":643,"name":"address","nodeType":"ElementaryTypeName","src":"2522:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":646,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":651,"src":"2534:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":645,"name":"uint256","nodeType":"ElementaryTypeName","src":"2534:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2521:28:9"},"returnParameters":{"id":650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":649,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":651,"src":"2568:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":648,"name":"uint256","nodeType":"ElementaryTypeName","src":"2568:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2567:9:9"},"scope":752,"src":"2506:71:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":652,"nodeType":"StructuredDocumentation","src":"2583:171:9","text":"@notice Burns all wrapper tokens from {msg.sender} and transfers\n the underlying tokens back.\n @return The amount of underlying tokens withdrawn."},"functionSelector":"9975038c","id":657,"implemented":false,"kind":"function","modifiers":[],"name":"burnAll","nodeType":"FunctionDefinition","parameters":{"id":653,"nodeType":"ParameterList","parameters":[],"src":"2775:2:9"},"returnParameters":{"id":656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":655,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":657,"src":"2796:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":654,"name":"uint256","nodeType":"ElementaryTypeName","src":"2796:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2795:9:9"},"scope":752,"src":"2759:46:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":658,"nodeType":"StructuredDocumentation","src":"2811:214:9","text":"@notice Burns all wrapper tokens from {msg.sender} and transfers\n the underlying tokens back.\n @param to The beneficiary account.\n @return The amount of underlying tokens withdrawn."},"functionSelector":"a4fa9568","id":665,"implemented":false,"kind":"function","modifiers":[],"name":"burnAllTo","nodeType":"FunctionDefinition","parameters":{"id":661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":660,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":665,"src":"3049:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":659,"name":"address","nodeType":"ElementaryTypeName","src":"3049:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3048:12:9"},"returnParameters":{"id":664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":663,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":665,"src":"3079:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":662,"name":"uint256","nodeType":"ElementaryTypeName","src":"3079:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3078:9:9"},"scope":752,"src":"3030:58:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":666,"nodeType":"StructuredDocumentation","src":"3094:262:9","text":"@notice Transfers underlying tokens from {msg.sender} to the contract and\n mints wrapper tokens to the specified beneficiary.\n @param uAmount The amount of underlying tokens to deposit.\n @return The amount of wrapper tokens mint."},"functionSelector":"b6b55f25","id":673,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":668,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":673,"src":"3378:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":667,"name":"uint256","nodeType":"ElementaryTypeName","src":"3378:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3377:17:9"},"returnParameters":{"id":672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":671,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":673,"src":"3413:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":670,"name":"uint256","nodeType":"ElementaryTypeName","src":"3413:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3412:9:9"},"scope":752,"src":"3361:61:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":674,"nodeType":"StructuredDocumentation","src":"3428:305:9","text":"@notice Transfers underlying tokens from {msg.sender} to the contract and\n mints wrapper tokens to the specified beneficiary.\n @param to The beneficiary account.\n @param uAmount The amount of underlying tokens to deposit.\n @return The amount of wrapper tokens mint."},"functionSelector":"2f4f21e2","id":683,"implemented":false,"kind":"function","modifiers":[],"name":"depositFor","nodeType":"FunctionDefinition","parameters":{"id":679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":683,"src":"3758:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":675,"name":"address","nodeType":"ElementaryTypeName","src":"3758:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":678,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":683,"src":"3770:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":677,"name":"uint256","nodeType":"ElementaryTypeName","src":"3770:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3757:29:9"},"returnParameters":{"id":682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":681,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":683,"src":"3805:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":680,"name":"uint256","nodeType":"ElementaryTypeName","src":"3805:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3804:9:9"},"scope":752,"src":"3738:76:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":684,"nodeType":"StructuredDocumentation","src":"3820:228:9","text":"@notice Burns wrapper tokens from {msg.sender} and transfers\n the underlying tokens back.\n @param uAmount The amount of underlying tokens to withdraw.\n @return The amount of wrapper tokens burnt."},"functionSelector":"2e1a7d4d","id":691,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":686,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":691,"src":"4071:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"4071:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4070:17:9"},"returnParameters":{"id":690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":689,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":691,"src":"4106:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":688,"name":"uint256","nodeType":"ElementaryTypeName","src":"4106:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4105:9:9"},"scope":752,"src":"4053:62:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":692,"nodeType":"StructuredDocumentation","src":"4121:300:9","text":"@notice Burns wrapper tokens from {msg.sender} and transfers\n the underlying tokens back to the specified beneficiary.\n @param to The beneficiary account.\n @param uAmount The amount of underlying tokens to withdraw.\n @return The amount of wrapper tokens burnt."},"functionSelector":"205c2878","id":701,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawTo","nodeType":"FunctionDefinition","parameters":{"id":697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":694,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":701,"src":"4446:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":693,"name":"address","nodeType":"ElementaryTypeName","src":"4446:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":696,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":701,"src":"4458:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":695,"name":"uint256","nodeType":"ElementaryTypeName","src":"4458:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4445:29:9"},"returnParameters":{"id":700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":699,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":701,"src":"4493:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":698,"name":"uint256","nodeType":"ElementaryTypeName","src":"4493:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4492:9:9"},"scope":752,"src":"4426:76:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":702,"nodeType":"StructuredDocumentation","src":"4508:164:9","text":"@notice Burns all wrapper tokens from {msg.sender} and transfers\n the underlying tokens back.\n @return The amount of wrapper tokens burnt."},"functionSelector":"853828b6","id":707,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawAll","nodeType":"FunctionDefinition","parameters":{"id":703,"nodeType":"ParameterList","parameters":[],"src":"4697:2:9"},"returnParameters":{"id":706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":705,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":707,"src":"4718:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":704,"name":"uint256","nodeType":"ElementaryTypeName","src":"4718:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4717:9:9"},"scope":752,"src":"4677:50:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":708,"nodeType":"StructuredDocumentation","src":"4733:207:9","text":"@notice Burns all wrapper tokens from {msg.sender} and transfers\n the underlying tokens back.\n @param to The beneficiary account.\n @return The amount of wrapper tokens burnt."},"functionSelector":"ca9add8f","id":715,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawAllTo","nodeType":"FunctionDefinition","parameters":{"id":711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":710,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":715,"src":"4968:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":709,"name":"address","nodeType":"ElementaryTypeName","src":"4968:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4967:12:9"},"returnParameters":{"id":714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":713,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":715,"src":"4998:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":712,"name":"uint256","nodeType":"ElementaryTypeName","src":"4998:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4997:9:9"},"scope":752,"src":"4945:62:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":716,"nodeType":"StructuredDocumentation","src":"5129:48:9","text":"@return The address of the underlying token."},"functionSelector":"6f307dc3","id":721,"implemented":false,"kind":"function","modifiers":[],"name":"underlying","nodeType":"FunctionDefinition","parameters":{"id":717,"nodeType":"ParameterList","parameters":[],"src":"5201:2:9"},"returnParameters":{"id":720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":719,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":721,"src":"5227:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":718,"name":"address","nodeType":"ElementaryTypeName","src":"5227:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5226:9:9"},"scope":752,"src":"5182:54:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":722,"nodeType":"StructuredDocumentation","src":"5242:69:9","text":"@return The total underlying tokens held by the wrapper contract."},"functionSelector":"c70920bc","id":727,"implemented":false,"kind":"function","modifiers":[],"name":"totalUnderlying","nodeType":"FunctionDefinition","parameters":{"id":723,"nodeType":"ParameterList","parameters":[],"src":"5340:2:9"},"returnParameters":{"id":726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":725,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":727,"src":"5366:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":724,"name":"uint256","nodeType":"ElementaryTypeName","src":"5366:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5365:9:9"},"scope":752,"src":"5316:59:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":728,"nodeType":"StructuredDocumentation","src":"5381:96:9","text":"@param who The account address.\n @return The underlying token balance of the account."},"functionSelector":"3af9e669","id":735,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOfUnderlying","nodeType":"FunctionDefinition","parameters":{"id":731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":730,"mutability":"mutable","name":"who","nodeType":"VariableDeclaration","scope":735,"src":"5511:11:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":729,"name":"address","nodeType":"ElementaryTypeName","src":"5511:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5510:13:9"},"returnParameters":{"id":734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":733,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":735,"src":"5547:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":732,"name":"uint256","nodeType":"ElementaryTypeName","src":"5547:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5546:9:9"},"scope":752,"src":"5482:74:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":736,"nodeType":"StructuredDocumentation","src":"5562:110:9","text":"@param uAmount The amount of underlying tokens.\n @return The amount of wrapper tokens exchangeable."},"functionSelector":"ed0287c0","id":743,"implemented":false,"kind":"function","modifiers":[],"name":"underlyingToWrapper","nodeType":"FunctionDefinition","parameters":{"id":739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":738,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":743,"src":"5706:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":737,"name":"uint256","nodeType":"ElementaryTypeName","src":"5706:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5705:17:9"},"returnParameters":{"id":742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":741,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":743,"src":"5746:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":740,"name":"uint256","nodeType":"ElementaryTypeName","src":"5746:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5745:9:9"},"scope":752,"src":"5677:78:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":744,"nodeType":"StructuredDocumentation","src":"5761:109:9","text":"@param amount The amount of wrapper tokens.\n @return The amount of underlying tokens exchangeable."},"functionSelector":"aab3b7db","id":751,"implemented":false,"kind":"function","modifiers":[],"name":"wrapperToUnderlying","nodeType":"FunctionDefinition","parameters":{"id":747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":746,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":751,"src":"5904:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":745,"name":"uint256","nodeType":"ElementaryTypeName","src":"5904:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5903:16:9"},"returnParameters":{"id":750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":749,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":751,"src":"5943:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":748,"name":"uint256","nodeType":"ElementaryTypeName","src":"5943:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5942:9:9"},"scope":752,"src":"5875:77:9","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":753,"src":"1073:4881:9"}],"src":"688:5267:9"},"id":9},"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol","exportedSymbols":{"IReaperTokenVault":[788]},"id":789,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":754,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:10"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":755,"nodeType":"ImportDirective","scope":789,"sourceUnit":1965,"src":"713:51:10","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":756,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1224:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":757,"nodeType":"InheritanceSpecifier","src":"1224:6:10"}],"contractDependencies":[1964],"contractKind":"interface","fullyImplemented":false,"id":788,"linearizedBaseContracts":[788,1964],"name":"IReaperTokenVault","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":758,"nodeType":"StructuredDocumentation","src":"1237:87:10","text":" @dev returns the address of the vault's underlying asset (mainToken)"},"functionSelector":"fc0c546a","id":763,"implemented":false,"kind":"function","modifiers":[],"name":"token","nodeType":"FunctionDefinition","parameters":{"id":759,"nodeType":"ParameterList","parameters":[],"src":"1343:2:10"},"returnParameters":{"id":762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":761,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":763,"src":"1369:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":760,"name":"address","nodeType":"ElementaryTypeName","src":"1369:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1368:9:10"},"scope":788,"src":"1329:49:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":764,"nodeType":"StructuredDocumentation","src":"1384:126:10","text":" @dev returns the price for a single Vault share (ie rf-scfUSDT). The getPricePerFullShare is always in 1e18"},"functionSelector":"77c7b8fc","id":769,"implemented":false,"kind":"function","modifiers":[],"name":"getPricePerFullShare","nodeType":"FunctionDefinition","parameters":{"id":765,"nodeType":"ParameterList","parameters":[],"src":"1544:2:10"},"returnParameters":{"id":768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":767,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":769,"src":"1570:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":766,"name":"uint256","nodeType":"ElementaryTypeName","src":"1570:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1569:9:10"},"scope":788,"src":"1515:64:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":770,"nodeType":"StructuredDocumentation","src":"1585:227:10","text":" @notice Deposits `_amount` `token`, issuing shares to the caller.\n If Panic is activated, deposits will not be accepted and this call will fail.\n @param _amount The quantity of tokens to deposit.*"},"functionSelector":"b6b55f25","id":775,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":772,"mutability":"mutable","name":"_amount","nodeType":"VariableDeclaration","scope":775,"src":"1834:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":771,"name":"uint256","nodeType":"ElementaryTypeName","src":"1834:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1833:17:10"},"returnParameters":{"id":774,"nodeType":"ParameterList","parameters":[],"src":"1859:0:10"},"scope":788,"src":"1817:43:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":776,"nodeType":"StructuredDocumentation","src":"1866:154:10","text":" @notice Withdraws the calling account's tokens from this Vault,\n redeeming amount `_shares` for an appropriate amount of tokens.*"},"functionSelector":"2e1a7d4d","id":781,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":778,"mutability":"mutable","name":"_shares","nodeType":"VariableDeclaration","scope":781,"src":"2043:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":777,"name":"uint256","nodeType":"ElementaryTypeName","src":"2043:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2042:17:10"},"returnParameters":{"id":780,"nodeType":"ParameterList","parameters":[],"src":"2068:0:10"},"scope":788,"src":"2025:44:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":782,"nodeType":"StructuredDocumentation","src":"2075:145:10","text":" @dev returns the number of decimals for this vault token.\n For reaper single-strat vaults, the decimals are fixed to 18."},"functionSelector":"313ce567","id":787,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","parameters":{"id":783,"nodeType":"ParameterList","parameters":[],"src":"2242:2:10"},"returnParameters":{"id":786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":787,"src":"2268:5:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":784,"name":"uint8","nodeType":"ElementaryTypeName","src":"2268:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2267:7:10"},"scope":788,"src":"2225:50:10","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":789,"src":"1193:1084:10"}],"src":"688:1590:10"},"id":10},"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol","exportedSymbols":{"IUnbuttonToken":[797]},"id":798,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":790,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:11"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":791,"nodeType":"ImportDirective","scope":798,"sourceUnit":1965,"src":"713:51:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol","file":"./IButtonWrapper.sol","id":792,"nodeType":"ImportDirective","scope":798,"sourceUnit":753,"src":"766:30:11","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":793,"name":"IButtonWrapper","nodeType":"UserDefinedTypeName","referencedDeclaration":752,"src":"948:14:11","typeDescriptions":{"typeIdentifier":"t_contract$_IButtonWrapper_$752","typeString":"contract IButtonWrapper"}},"id":794,"nodeType":"InheritanceSpecifier","src":"948:14:11"},{"baseName":{"id":795,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"964:6:11","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":796,"nodeType":"InheritanceSpecifier","src":"964:6:11"}],"contractDependencies":[752,1964],"contractKind":"interface","fullyImplemented":false,"id":797,"linearizedBaseContracts":[797,1964,752],"name":"IUnbuttonToken","nodeType":"ContractDefinition","nodes":[],"scope":798,"src":"920:107:11"}],"src":"688:340:11"},"id":11},"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol","exportedSymbols":{"StablePoolUserData":[963]},"id":964,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":799,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:12"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":963,"linearizedBaseContracts":[963],"name":"StablePoolUserData","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StablePoolUserData.JoinKind","id":803,"members":[{"id":800,"name":"INIT","nodeType":"EnumValue","src":"762:4:12"},{"id":801,"name":"EXACT_TOKENS_IN_FOR_BPT_OUT","nodeType":"EnumValue","src":"768:27:12"},{"id":802,"name":"TOKEN_IN_FOR_EXACT_BPT_OUT","nodeType":"EnumValue","src":"797:26:12"}],"name":"JoinKind","nodeType":"EnumDefinition","src":"746:79:12"},{"canonicalName":"StablePoolUserData.ExitKind","id":806,"members":[{"id":804,"name":"EXACT_BPT_IN_FOR_ONE_TOKEN_OUT","nodeType":"EnumValue","src":"846:30:12"},{"id":805,"name":"BPT_IN_FOR_EXACT_TOKENS_OUT","nodeType":"EnumValue","src":"878:27:12"}],"name":"ExitKind","nodeType":"EnumDefinition","src":"830:77:12"},{"body":{"id":820,"nodeType":"Block","src":"983:52:12","statements":[{"expression":{"arguments":[{"id":815,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"1011:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":816,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":803,"src":"1018:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$803_$","typeString":"type(enum StablePoolUserData.JoinKind)"}}],"id":817,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1017:10:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$803_$","typeString":"type(enum StablePoolUserData.JoinKind)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_enum$_JoinKind_$803_$","typeString":"type(enum StablePoolUserData.JoinKind)"}],"expression":{"id":813,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1000:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":814,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1000:10:12","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1000:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$803","typeString":"enum StablePoolUserData.JoinKind"}},"functionReturnParameters":812,"id":819,"nodeType":"Return","src":"993:35:12"}]},"id":821,"implemented":true,"kind":"function","modifiers":[],"name":"joinKind","nodeType":"FunctionDefinition","parameters":{"id":809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":808,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":821,"src":"931:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":807,"name":"bytes","nodeType":"ElementaryTypeName","src":"931:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"930:19:12"},"returnParameters":{"id":812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":811,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":821,"src":"973:8:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$803","typeString":"enum StablePoolUserData.JoinKind"},"typeName":{"id":810,"name":"JoinKind","nodeType":"UserDefinedTypeName","referencedDeclaration":803,"src":"973:8:12","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$803","typeString":"enum StablePoolUserData.JoinKind"}},"visibility":"internal"}],"src":"972:10:12"},"scope":963,"src":"913:122:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":835,"nodeType":"Block","src":"1111:52:12","statements":[{"expression":{"arguments":[{"id":830,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":823,"src":"1139:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":831,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"1146:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$806_$","typeString":"type(enum StablePoolUserData.ExitKind)"}}],"id":832,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1145:10:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$806_$","typeString":"type(enum StablePoolUserData.ExitKind)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_enum$_ExitKind_$806_$","typeString":"type(enum StablePoolUserData.ExitKind)"}],"expression":{"id":828,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1128:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1128:10:12","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1128:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$806","typeString":"enum StablePoolUserData.ExitKind"}},"functionReturnParameters":827,"id":834,"nodeType":"Return","src":"1121:35:12"}]},"id":836,"implemented":true,"kind":"function","modifiers":[],"name":"exitKind","nodeType":"FunctionDefinition","parameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":836,"src":"1059:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":822,"name":"bytes","nodeType":"ElementaryTypeName","src":"1059:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1058:19:12"},"returnParameters":{"id":827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":826,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":836,"src":"1101:8:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$806","typeString":"enum StablePoolUserData.ExitKind"},"typeName":{"id":825,"name":"ExitKind","nodeType":"UserDefinedTypeName","referencedDeclaration":806,"src":"1101:8:12","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$806","typeString":"enum StablePoolUserData.ExitKind"}},"visibility":"internal"}],"src":"1100:10:12"},"scope":963,"src":"1041:122:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":857,"nodeType":"Block","src":"1279:72:12","statements":[{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":844,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":842,"src":"1292:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":845,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1289:13:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":848,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":838,"src":"1316:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":849,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":803,"src":"1323:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$803_$","typeString":"type(enum StablePoolUserData.JoinKind)"}},{"baseExpression":{"id":851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1333:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":850,"name":"uint256","nodeType":"ElementaryTypeName","src":"1333:7:12","typeDescriptions":{}}},"id":852,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"1333:9:12","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"id":853,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1322:21:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$803_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256[] memory))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$803_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256[] memory))"}],"expression":{"id":846,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1305:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":847,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1305:10:12","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1305:39:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$803_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(enum StablePoolUserData.JoinKind,uint256[] memory)"}},"src":"1289:55:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":856,"nodeType":"ExpressionStatement","src":"1289:55:12"}]},"id":858,"implemented":true,"kind":"function","modifiers":[],"name":"initialAmountsIn","nodeType":"FunctionDefinition","parameters":{"id":839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":838,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":858,"src":"1209:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":837,"name":"bytes","nodeType":"ElementaryTypeName","src":"1209:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1208:19:12"},"returnParameters":{"id":843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":842,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":858,"src":"1251:26:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":840,"name":"uint256","nodeType":"ElementaryTypeName","src":"1251:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ArrayTypeName","src":"1251:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1250:28:12"},"scope":963,"src":"1183:168:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":884,"nodeType":"Block","src":"1512:98:12","statements":[{"expression":{"id":882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":868,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":864,"src":"1525:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":869,"name":"minBPTAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":866,"src":"1536:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":870,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1522:30:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(,uint256[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":873,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"1566:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":874,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":803,"src":"1573:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$803_$","typeString":"type(enum StablePoolUserData.JoinKind)"}},{"baseExpression":{"id":876,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1583:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":875,"name":"uint256","nodeType":"ElementaryTypeName","src":"1583:7:12","typeDescriptions":{}}},"id":877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"1583:9:12","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1594:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":878,"name":"uint256","nodeType":"ElementaryTypeName","src":"1594:7:12","typeDescriptions":{}}}],"id":880,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1572:30:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$803_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256[] memory),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$803_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256[] memory),type(uint256))"}],"expression":{"id":871,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1555:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":872,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1555:10:12","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1555:48:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$803_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(enum StablePoolUserData.JoinKind,uint256[] memory,uint256)"}},"src":"1522:81:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":883,"nodeType":"ExpressionStatement","src":"1522:81:12"}]},"id":885,"implemented":true,"kind":"function","modifiers":[],"name":"exactTokensInForBptOut","nodeType":"FunctionDefinition","parameters":{"id":861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":860,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":885,"src":"1389:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":859,"name":"bytes","nodeType":"ElementaryTypeName","src":"1389:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1388:19:12"},"returnParameters":{"id":867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":864,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":885,"src":"1455:26:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":862,"name":"uint256","nodeType":"ElementaryTypeName","src":"1455:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":863,"nodeType":"ArrayTypeName","src":"1455:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":866,"mutability":"mutable","name":"minBPTAmountOut","nodeType":"VariableDeclaration","scope":885,"src":"1483:23:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":865,"name":"uint256","nodeType":"ElementaryTypeName","src":"1483:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1454:53:12"},"scope":963,"src":"1357:253:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":909,"nodeType":"Block","src":"1731:94:12","statements":[{"expression":{"id":907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":894,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"1744:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":895,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":892,"src":"1758:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":896,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1741:28:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$_t_uint256_$","typeString":"tuple(,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":899,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":887,"src":"1783:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":900,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":803,"src":"1790:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$803_$","typeString":"type(enum StablePoolUserData.JoinKind)"}},{"id":902,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1800:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":901,"name":"uint256","nodeType":"ElementaryTypeName","src":"1800:7:12","typeDescriptions":{}}},{"id":904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1809:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":903,"name":"uint256","nodeType":"ElementaryTypeName","src":"1809:7:12","typeDescriptions":{}}}],"id":905,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1789:28:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$803_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$803_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256),type(uint256))"}],"expression":{"id":897,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1772:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":898,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1772:10:12","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1772:46:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$803_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum StablePoolUserData.JoinKind,uint256,uint256)"}},"src":"1741:77:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":908,"nodeType":"ExpressionStatement","src":"1741:77:12"}]},"id":910,"implemented":true,"kind":"function","modifiers":[],"name":"tokenInForExactBptOut","nodeType":"FunctionDefinition","parameters":{"id":888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":887,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":910,"src":"1647:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":886,"name":"bytes","nodeType":"ElementaryTypeName","src":"1647:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1646:19:12"},"returnParameters":{"id":893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":890,"mutability":"mutable","name":"bptAmountOut","nodeType":"VariableDeclaration","scope":910,"src":"1689:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":889,"name":"uint256","nodeType":"ElementaryTypeName","src":"1689:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":892,"mutability":"mutable","name":"tokenIndex","nodeType":"VariableDeclaration","scope":910,"src":"1711:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":891,"name":"uint256","nodeType":"ElementaryTypeName","src":"1711:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1688:42:12"},"scope":963,"src":"1616:209:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":934,"nodeType":"Block","src":"1959:93:12","statements":[{"expression":{"id":932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":919,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":915,"src":"1972:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":920,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"1985:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":921,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1969:27:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$_t_uint256_$","typeString":"tuple(,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":924,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"2010:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":925,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"2017:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$806_$","typeString":"type(enum StablePoolUserData.ExitKind)"}},{"id":927,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2027:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":926,"name":"uint256","nodeType":"ElementaryTypeName","src":"2027:7:12","typeDescriptions":{}}},{"id":929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2036:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":928,"name":"uint256","nodeType":"ElementaryTypeName","src":"2036:7:12","typeDescriptions":{}}}],"id":930,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2016:28:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$806_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.ExitKind),type(uint256),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$806_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.ExitKind),type(uint256),type(uint256))"}],"expression":{"id":922,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1999:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1999:10:12","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1999:46:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_ExitKind_$806_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum StablePoolUserData.ExitKind,uint256,uint256)"}},"src":"1969:76:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":933,"nodeType":"ExpressionStatement","src":"1969:76:12"}]},"id":935,"implemented":true,"kind":"function","modifiers":[],"name":"exactBptInForTokenOut","nodeType":"FunctionDefinition","parameters":{"id":913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":912,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":935,"src":"1876:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":911,"name":"bytes","nodeType":"ElementaryTypeName","src":"1876:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1875:19:12"},"returnParameters":{"id":918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":915,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":935,"src":"1918:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":914,"name":"uint256","nodeType":"ElementaryTypeName","src":"1918:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":917,"mutability":"mutable","name":"tokenIndex","nodeType":"VariableDeclaration","scope":935,"src":"1939:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":916,"name":"uint256","nodeType":"ElementaryTypeName","src":"1939:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1917:41:12"},"scope":963,"src":"1845:207:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":961,"nodeType":"Block","src":"2213:98:12","statements":[{"expression":{"id":959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":945,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":941,"src":"2226:10:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":946,"name":"maxBPTAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":943,"src":"2238:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":947,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2223:30:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(,uint256[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":950,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":937,"src":"2267:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":951,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"2274:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$806_$","typeString":"type(enum StablePoolUserData.ExitKind)"}},{"baseExpression":{"id":953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2284:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":952,"name":"uint256","nodeType":"ElementaryTypeName","src":"2284:7:12","typeDescriptions":{}}},"id":954,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"2284:9:12","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2295:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":955,"name":"uint256","nodeType":"ElementaryTypeName","src":"2295:7:12","typeDescriptions":{}}}],"id":957,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2273:30:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$806_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.ExitKind),type(uint256[] memory),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$806_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.ExitKind),type(uint256[] memory),type(uint256))"}],"expression":{"id":948,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2256:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2256:10:12","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2256:48:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_ExitKind_$806_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(enum StablePoolUserData.ExitKind,uint256[] memory,uint256)"}},"src":"2223:81:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":960,"nodeType":"ExpressionStatement","src":"2223:81:12"}]},"id":962,"implemented":true,"kind":"function","modifiers":[],"name":"bptInForExactTokensOut","nodeType":"FunctionDefinition","parameters":{"id":938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":937,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":962,"src":"2090:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":936,"name":"bytes","nodeType":"ElementaryTypeName","src":"2090:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2089:19:12"},"returnParameters":{"id":944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":941,"mutability":"mutable","name":"amountsOut","nodeType":"VariableDeclaration","scope":962,"src":"2156:27:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":939,"name":"uint256","nodeType":"ElementaryTypeName","src":"2156:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":940,"nodeType":"ArrayTypeName","src":"2156:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":943,"mutability":"mutable","name":"maxBPTAmountIn","nodeType":"VariableDeclaration","scope":962,"src":"2185:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":942,"name":"uint256","nodeType":"ElementaryTypeName","src":"2185:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2155:53:12"},"scope":963,"src":"2058:253:12","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":964,"src":"713:1600:12"}],"src":"688:1626:12"},"id":12},"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol","exportedSymbols":{"WeightedPoolUserData":[1193]},"id":1194,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":965,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:13"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":966,"nodeType":"ImportDirective","scope":1194,"sourceUnit":1965,"src":"713:51:13","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":1193,"linearizedBaseContracts":[1193],"name":"WeightedPoolUserData","nodeType":"ContractDefinition","nodes":[{"canonicalName":"WeightedPoolUserData.JoinKind","id":971,"members":[{"id":967,"name":"INIT","nodeType":"EnumValue","src":"938:4:13"},{"id":968,"name":"EXACT_TOKENS_IN_FOR_BPT_OUT","nodeType":"EnumValue","src":"944:27:13"},{"id":969,"name":"TOKEN_IN_FOR_EXACT_BPT_OUT","nodeType":"EnumValue","src":"973:26:13"},{"id":970,"name":"ALL_TOKENS_IN_FOR_EXACT_BPT_OUT","nodeType":"EnumValue","src":"1001:31:13"}],"name":"JoinKind","nodeType":"EnumDefinition","src":"922:112:13"},{"canonicalName":"WeightedPoolUserData.ExitKind","id":976,"members":[{"id":972,"name":"EXACT_BPT_IN_FOR_ONE_TOKEN_OUT","nodeType":"EnumValue","src":"1063:30:13"},{"id":973,"name":"EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"EnumValue","src":"1103:27:13"},{"id":974,"name":"BPT_IN_FOR_EXACT_TOKENS_OUT","nodeType":"EnumValue","src":"1140:27:13"},{"id":975,"name":"REMOVE_TOKEN","nodeType":"EnumValue","src":"1177:12:13"}],"name":"ExitKind","nodeType":"EnumDefinition","src":"1039:175:13"},{"body":{"id":990,"nodeType":"Block","src":"1290:52:13","statements":[{"expression":{"arguments":[{"id":985,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":978,"src":"1318:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":986,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"1325:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$971_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}}],"id":987,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1324:10:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$971_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_enum$_JoinKind_$971_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}],"expression":{"id":983,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1307:3:13","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":984,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1307:10:13","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1307:28:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$971","typeString":"enum WeightedPoolUserData.JoinKind"}},"functionReturnParameters":982,"id":989,"nodeType":"Return","src":"1300:35:13"}]},"id":991,"implemented":true,"kind":"function","modifiers":[],"name":"joinKind","nodeType":"FunctionDefinition","parameters":{"id":979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":978,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":991,"src":"1238:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":977,"name":"bytes","nodeType":"ElementaryTypeName","src":"1238:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1237:19:13"},"returnParameters":{"id":982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":981,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":991,"src":"1280:8:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$971","typeString":"enum WeightedPoolUserData.JoinKind"},"typeName":{"id":980,"name":"JoinKind","nodeType":"UserDefinedTypeName","referencedDeclaration":971,"src":"1280:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$971","typeString":"enum WeightedPoolUserData.JoinKind"}},"visibility":"internal"}],"src":"1279:10:13"},"scope":1193,"src":"1220:122:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1005,"nodeType":"Block","src":"1418:52:13","statements":[{"expression":{"arguments":[{"id":1000,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"1446:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1001,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"1453:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$976_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}}],"id":1002,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1452:10:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$976_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_enum$_ExitKind_$976_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}],"expression":{"id":998,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1435:3:13","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1435:10:13","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1435:28:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$976","typeString":"enum WeightedPoolUserData.ExitKind"}},"functionReturnParameters":997,"id":1004,"nodeType":"Return","src":"1428:35:13"}]},"id":1006,"implemented":true,"kind":"function","modifiers":[],"name":"exitKind","nodeType":"FunctionDefinition","parameters":{"id":994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":993,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1006,"src":"1366:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":992,"name":"bytes","nodeType":"ElementaryTypeName","src":"1366:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1365:19:13"},"returnParameters":{"id":997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":996,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1006,"src":"1408:8:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$976","typeString":"enum WeightedPoolUserData.ExitKind"},"typeName":{"id":995,"name":"ExitKind","nodeType":"UserDefinedTypeName","referencedDeclaration":976,"src":"1408:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$976","typeString":"enum WeightedPoolUserData.ExitKind"}},"visibility":"internal"}],"src":"1407:10:13"},"scope":1193,"src":"1348:122:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1027,"nodeType":"Block","src":"1586:72:13","statements":[{"expression":{"id":1025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":1014,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1012,"src":"1599:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":1015,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1596:13:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1018,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1008,"src":"1623:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1019,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"1630:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$971_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}},{"baseExpression":{"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1640:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1020,"name":"uint256","nodeType":"ElementaryTypeName","src":"1640:7:13","typeDescriptions":{}}},"id":1022,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"1640:9:13","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"id":1023,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1629:21:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$971_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256[] memory))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$971_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256[] memory))"}],"expression":{"id":1016,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1612:3:13","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1612:10:13","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1612:39:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$971_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(enum WeightedPoolUserData.JoinKind,uint256[] memory)"}},"src":"1596:55:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1026,"nodeType":"ExpressionStatement","src":"1596:55:13"}]},"id":1028,"implemented":true,"kind":"function","modifiers":[],"name":"initialAmountsIn","nodeType":"FunctionDefinition","parameters":{"id":1009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1008,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1028,"src":"1516:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1007,"name":"bytes","nodeType":"ElementaryTypeName","src":"1516:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1515:19:13"},"returnParameters":{"id":1013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1012,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":1028,"src":"1558:26:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1010,"name":"uint256","nodeType":"ElementaryTypeName","src":"1558:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1011,"nodeType":"ArrayTypeName","src":"1558:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1557:28:13"},"scope":1193,"src":"1490:168:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1054,"nodeType":"Block","src":"1819:98:13","statements":[{"expression":{"id":1052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":1038,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1034,"src":"1832:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":1039,"name":"minBPTAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1036,"src":"1843:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1040,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1829:30:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(,uint256[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1043,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1030,"src":"1873:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1044,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"1880:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$971_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}},{"baseExpression":{"id":1046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1890:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1045,"name":"uint256","nodeType":"ElementaryTypeName","src":"1890:7:13","typeDescriptions":{}}},"id":1047,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"1890:9:13","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":1049,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1901:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1048,"name":"uint256","nodeType":"ElementaryTypeName","src":"1901:7:13","typeDescriptions":{}}}],"id":1050,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1879:30:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$971_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256[] memory),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$971_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256[] memory),type(uint256))"}],"expression":{"id":1041,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1862:3:13","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1862:10:13","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1862:48:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$971_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(enum WeightedPoolUserData.JoinKind,uint256[] memory,uint256)"}},"src":"1829:81:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1053,"nodeType":"ExpressionStatement","src":"1829:81:13"}]},"id":1055,"implemented":true,"kind":"function","modifiers":[],"name":"exactTokensInForBptOut","nodeType":"FunctionDefinition","parameters":{"id":1031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1030,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1055,"src":"1696:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1029,"name":"bytes","nodeType":"ElementaryTypeName","src":"1696:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1695:19:13"},"returnParameters":{"id":1037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1034,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":1055,"src":"1762:26:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1032,"name":"uint256","nodeType":"ElementaryTypeName","src":"1762:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1033,"nodeType":"ArrayTypeName","src":"1762:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1036,"mutability":"mutable","name":"minBPTAmountOut","nodeType":"VariableDeclaration","scope":1055,"src":"1790:23:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1035,"name":"uint256","nodeType":"ElementaryTypeName","src":"1790:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1761:53:13"},"scope":1193,"src":"1664:253:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1079,"nodeType":"Block","src":"2038:94:13","statements":[{"expression":{"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":1064,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1060,"src":"2051:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1065,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1062,"src":"2065:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1066,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2048:28:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$_t_uint256_$","typeString":"tuple(,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1069,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1057,"src":"2090:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1070,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"2097:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$971_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}},{"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2107:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1071,"name":"uint256","nodeType":"ElementaryTypeName","src":"2107:7:13","typeDescriptions":{}}},{"id":1074,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2116:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1073,"name":"uint256","nodeType":"ElementaryTypeName","src":"2116:7:13","typeDescriptions":{}}}],"id":1075,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2096:28:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$971_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$971_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256),type(uint256))"}],"expression":{"id":1067,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2079:3:13","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2079:10:13","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2079:46:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$971_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum WeightedPoolUserData.JoinKind,uint256,uint256)"}},"src":"2048:77:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1078,"nodeType":"ExpressionStatement","src":"2048:77:13"}]},"id":1080,"implemented":true,"kind":"function","modifiers":[],"name":"tokenInForExactBptOut","nodeType":"FunctionDefinition","parameters":{"id":1058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1057,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1080,"src":"1954:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1056,"name":"bytes","nodeType":"ElementaryTypeName","src":"1954:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1953:19:13"},"returnParameters":{"id":1063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1060,"mutability":"mutable","name":"bptAmountOut","nodeType":"VariableDeclaration","scope":1080,"src":"1996:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1059,"name":"uint256","nodeType":"ElementaryTypeName","src":"1996:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1062,"mutability":"mutable","name":"tokenIndex","nodeType":"VariableDeclaration","scope":1080,"src":"2018:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1061,"name":"uint256","nodeType":"ElementaryTypeName","src":"2018:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1995:42:13"},"scope":1193,"src":"1923:209:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1099,"nodeType":"Block","src":"2237:73:13","statements":[{"expression":{"id":1097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":1087,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1085,"src":"2250:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1088,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2247:16:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$","typeString":"tuple(,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1091,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"2277:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1092,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"2284:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$971_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}},{"id":1094,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2294:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1093,"name":"uint256","nodeType":"ElementaryTypeName","src":"2294:7:13","typeDescriptions":{}}}],"id":1095,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2283:19:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$971_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$971_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256))"}],"expression":{"id":1089,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2266:3:13","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1090,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2266:10:13","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2266:37:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$971_$_t_uint256_$","typeString":"tuple(enum WeightedPoolUserData.JoinKind,uint256)"}},"src":"2247:56:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1098,"nodeType":"ExpressionStatement","src":"2247:56:13"}]},"id":1100,"implemented":true,"kind":"function","modifiers":[],"name":"allTokensInForExactBptOut","nodeType":"FunctionDefinition","parameters":{"id":1083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1082,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1100,"src":"2173:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1081,"name":"bytes","nodeType":"ElementaryTypeName","src":"2173:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2172:19:13"},"returnParameters":{"id":1086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1085,"mutability":"mutable","name":"bptAmountOut","nodeType":"VariableDeclaration","scope":1100,"src":"2215:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1084,"name":"uint256","nodeType":"ElementaryTypeName","src":"2215:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2214:22:13"},"scope":1193,"src":"2138:172:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1124,"nodeType":"Block","src":"2444:93:13","statements":[{"expression":{"id":1122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":1109,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1105,"src":"2457:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1110,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1107,"src":"2470:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1111,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2454:27:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$_t_uint256_$","typeString":"tuple(,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1114,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1102,"src":"2495:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1115,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"2502:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$976_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},{"id":1117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2512:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1116,"name":"uint256","nodeType":"ElementaryTypeName","src":"2512:7:13","typeDescriptions":{}}},{"id":1119,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2521:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1118,"name":"uint256","nodeType":"ElementaryTypeName","src":"2521:7:13","typeDescriptions":{}}}],"id":1120,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2501:28:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$976_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$976_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256),type(uint256))"}],"expression":{"id":1112,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2484:3:13","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2484:10:13","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2484:46:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_ExitKind_$976_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum WeightedPoolUserData.ExitKind,uint256,uint256)"}},"src":"2454:76:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1123,"nodeType":"ExpressionStatement","src":"2454:76:13"}]},"id":1125,"implemented":true,"kind":"function","modifiers":[],"name":"exactBptInForTokenOut","nodeType":"FunctionDefinition","parameters":{"id":1103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1102,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1125,"src":"2361:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1101,"name":"bytes","nodeType":"ElementaryTypeName","src":"2361:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2360:19:13"},"returnParameters":{"id":1108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1105,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":1125,"src":"2403:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1104,"name":"uint256","nodeType":"ElementaryTypeName","src":"2403:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1107,"mutability":"mutable","name":"tokenIndex","nodeType":"VariableDeclaration","scope":1125,"src":"2424:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1106,"name":"uint256","nodeType":"ElementaryTypeName","src":"2424:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2402:41:13"},"scope":1193,"src":"2330:207:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1144,"nodeType":"Block","src":"2638:72:13","statements":[{"expression":{"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":1132,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1130,"src":"2651:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1133,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2648:15:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$","typeString":"tuple(,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1136,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1127,"src":"2677:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1137,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"2684:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$976_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},{"id":1139,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2694:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1138,"name":"uint256","nodeType":"ElementaryTypeName","src":"2694:7:13","typeDescriptions":{}}}],"id":1140,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2683:19:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$976_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$976_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256))"}],"expression":{"id":1134,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2666:3:13","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2666:10:13","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2666:37:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_ExitKind_$976_$_t_uint256_$","typeString":"tuple(enum WeightedPoolUserData.ExitKind,uint256)"}},"src":"2648:55:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1143,"nodeType":"ExpressionStatement","src":"2648:55:13"}]},"id":1145,"implemented":true,"kind":"function","modifiers":[],"name":"exactBptInForTokensOut","nodeType":"FunctionDefinition","parameters":{"id":1128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1127,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1145,"src":"2575:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1126,"name":"bytes","nodeType":"ElementaryTypeName","src":"2575:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2574:19:13"},"returnParameters":{"id":1131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1130,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":1145,"src":"2617:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1129,"name":"uint256","nodeType":"ElementaryTypeName","src":"2617:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2616:21:13"},"scope":1193,"src":"2543:167:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1171,"nodeType":"Block","src":"2871:98:13","statements":[{"expression":{"id":1169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":1155,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"2884:10:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":1156,"name":"maxBPTAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1153,"src":"2896:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1157,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2881:30:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(,uint256[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1160,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1147,"src":"2925:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1161,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"2932:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$976_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},{"baseExpression":{"id":1163,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2942:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1162,"name":"uint256","nodeType":"ElementaryTypeName","src":"2942:7:13","typeDescriptions":{}}},"id":1164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"2942:9:13","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":1166,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2953:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1165,"name":"uint256","nodeType":"ElementaryTypeName","src":"2953:7:13","typeDescriptions":{}}}],"id":1167,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2931:30:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$976_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256[] memory),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$976_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256[] memory),type(uint256))"}],"expression":{"id":1158,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2914:3:13","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1159,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2914:10:13","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2914:48:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_ExitKind_$976_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(enum WeightedPoolUserData.ExitKind,uint256[] memory,uint256)"}},"src":"2881:81:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1170,"nodeType":"ExpressionStatement","src":"2881:81:13"}]},"id":1172,"implemented":true,"kind":"function","modifiers":[],"name":"bptInForExactTokensOut","nodeType":"FunctionDefinition","parameters":{"id":1148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1147,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1172,"src":"2748:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1146,"name":"bytes","nodeType":"ElementaryTypeName","src":"2748:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2747:19:13"},"returnParameters":{"id":1154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"amountsOut","nodeType":"VariableDeclaration","scope":1172,"src":"2814:27:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1149,"name":"uint256","nodeType":"ElementaryTypeName","src":"2814:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1150,"nodeType":"ArrayTypeName","src":"2814:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1153,"mutability":"mutable","name":"maxBPTAmountIn","nodeType":"VariableDeclaration","scope":1172,"src":"2843:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1152,"name":"uint256","nodeType":"ElementaryTypeName","src":"2843:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2813:53:13"},"scope":1193,"src":"2716:253:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1191,"nodeType":"Block","src":"3078:71:13","statements":[{"expression":{"id":1189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":1179,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1177,"src":"3091:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1180,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3088:14:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$","typeString":"tuple(,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1183,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1174,"src":"3116:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1184,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"3123:8:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$976_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},{"id":1186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3133:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1185,"name":"uint256","nodeType":"ElementaryTypeName","src":"3133:7:13","typeDescriptions":{}}}],"id":1187,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3122:19:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$976_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$976_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256))"}],"expression":{"id":1181,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3105:3:13","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1182,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"3105:10:13","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3105:37:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_ExitKind_$976_$_t_uint256_$","typeString":"tuple(enum WeightedPoolUserData.ExitKind,uint256)"}},"src":"3088:54:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1190,"nodeType":"ExpressionStatement","src":"3088:54:13"}]},"id":1192,"implemented":true,"kind":"function","modifiers":[],"name":"removeToken","nodeType":"FunctionDefinition","parameters":{"id":1175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1174,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1192,"src":"3016:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1173,"name":"bytes","nodeType":"ElementaryTypeName","src":"3016:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3015:19:13"},"returnParameters":{"id":1178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1177,"mutability":"mutable","name":"tokenIndex","nodeType":"VariableDeclaration","scope":1192,"src":"3058:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1176,"name":"uint256","nodeType":"ElementaryTypeName","src":"3058:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3057:20:13"},"scope":1193,"src":"2995:154:13","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1194,"src":"766:2385:13"}],"src":"688:2464:13"},"id":13},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","exportedSymbols":{"Errors":[1743],"_require":[1211,1230],"_revert":[1242,1262]},"id":1744,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1195,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:14"},{"body":{"id":1210,"nodeType":"Block","src":"976:43:14","statements":[{"condition":{"id":1204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"986:10:14","subExpression":{"id":1203,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1198,"src":"987:9:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1209,"nodeType":"IfStatement","src":"982:34:14","trueBody":{"expression":{"arguments":[{"id":1206,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1200,"src":"1006:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1205,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1242,1262],"referencedDeclaration":1242,"src":"998:7:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"998:18:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1208,"nodeType":"ExpressionStatement","src":"998:18:14"}}]},"documentation":{"id":1196,"nodeType":"StructuredDocumentation","src":"733:184:14","text":" @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n supported.\n Uses the default 'BAL' prefix for the error code"},"id":1211,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_require","nodeType":"FunctionDefinition","parameters":{"id":1201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1198,"mutability":"mutable","name":"condition","nodeType":"VariableDeclaration","scope":1211,"src":"936:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1197,"name":"bool","nodeType":"ElementaryTypeName","src":"936:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1200,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":1211,"src":"952:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1199,"name":"uint256","nodeType":"ElementaryTypeName","src":"952:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"935:35:14"},"returnParameters":{"id":1202,"nodeType":"ParameterList","parameters":[],"src":"976:0:14"},"scope":1744,"src":"918:101:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1229,"nodeType":"Block","src":"1227:51:14","statements":[{"condition":{"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1237:10:14","subExpression":{"id":1221,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1214,"src":"1238:9:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1228,"nodeType":"IfStatement","src":"1233:42:14","trueBody":{"expression":{"arguments":[{"id":1224,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1216,"src":"1257:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1225,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1218,"src":"1268:6:14","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes3","typeString":"bytes3"}],"id":1223,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1242,1262],"referencedDeclaration":1262,"src":"1249:7:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_bytes3_$returns$__$","typeString":"function (uint256,bytes3) pure"}},"id":1226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1249:26:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1227,"nodeType":"ExpressionStatement","src":"1249:26:14"}}]},"documentation":{"id":1212,"nodeType":"StructuredDocumentation","src":"1021:132:14","text":" @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n supported."},"id":1230,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_require","nodeType":"FunctionDefinition","parameters":{"id":1219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1214,"mutability":"mutable","name":"condition","nodeType":"VariableDeclaration","scope":1230,"src":"1172:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1213,"name":"bool","nodeType":"ElementaryTypeName","src":"1172:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1216,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":1230,"src":"1188:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1215,"name":"uint256","nodeType":"ElementaryTypeName","src":"1188:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1218,"mutability":"mutable","name":"prefix","nodeType":"VariableDeclaration","scope":1230,"src":"1207:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"},"typeName":{"id":1217,"name":"bytes3","nodeType":"ElementaryTypeName","src":"1207:6:14","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}},"visibility":"internal"}],"src":"1171:50:14"},"returnParameters":{"id":1220,"nodeType":"ParameterList","parameters":[],"src":"1227:0:14"},"scope":1744,"src":"1154:124:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1241,"nodeType":"Block","src":"1478:85:14","statements":[{"expression":{"arguments":[{"id":1237,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1233,"src":"1492:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"3078343234313463","id":1238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1503:8:14","typeDescriptions":{"typeIdentifier":"t_rational_4342092_by_1","typeString":"int_const 4342092"},"value":"0x42414c"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_4342092_by_1","typeString":"int_const 4342092"}],"id":1236,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1242,1262],"referencedDeclaration":1262,"src":"1484:7:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_bytes3_$returns$__$","typeString":"function (uint256,bytes3) pure"}},"id":1239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1484:28:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1240,"nodeType":"ExpressionStatement","src":"1484:28:14"}]},"documentation":{"id":1231,"nodeType":"StructuredDocumentation","src":"1280:156:14","text":" @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported.\n Uses the default 'BAL' prefix for the error code"},"id":1242,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_revert","nodeType":"FunctionDefinition","parameters":{"id":1234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1233,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":1242,"src":"1454:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1232,"name":"uint256","nodeType":"ElementaryTypeName","src":"1454:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1453:19:14"},"returnParameters":{"id":1235,"nodeType":"ParameterList","parameters":[],"src":"1478:0:14"},"scope":1744,"src":"1437:126:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1261,"nodeType":"Block","src":"1726:3322:14","statements":[{"assignments":[1251],"declarations":[{"constant":false,"id":1251,"mutability":"mutable","name":"prefixUint","nodeType":"VariableDeclaration","scope":1261,"src":"1732:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1250,"name":"uint256","nodeType":"ElementaryTypeName","src":"1732:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1259,"initialValue":{"arguments":[{"arguments":[{"id":1256,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"1768:6:14","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes3","typeString":"bytes3"}],"id":1255,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1761:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":1254,"name":"uint24","nodeType":"ElementaryTypeName","src":"1761:6:14","typeDescriptions":{}}},"id":1257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1761:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":1253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1753:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1252,"name":"uint256","nodeType":"ElementaryTypeName","src":"1753:7:14","typeDescriptions":{}}},"id":1258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1753:23:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1732:44:14"},{"AST":{"nodeType":"YulBlock","src":"2565:2481:14","statements":[{"nodeType":"YulVariableDeclaration","src":"2839:42:14","value":{"arguments":[{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2860:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"2871:2:14","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"2856:3:14"},"nodeType":"YulFunctionCall","src":"2856:18:14"},{"kind":"number","nodeType":"YulLiteral","src":"2876:4:14","type":"","value":"0x30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2852:3:14"},"nodeType":"YulFunctionCall","src":"2852:29:14"},"variables":[{"name":"units","nodeType":"YulTypedName","src":"2843:5:14","type":""}]},{"nodeType":"YulAssignment","src":"2891:31:14","value":{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2908:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"2919:2:14","type":"","value":"10"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2904:3:14"},"nodeType":"YulFunctionCall","src":"2904:18:14"},"variableNames":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2891:9:14"}]},{"nodeType":"YulVariableDeclaration","src":"2931:43:14","value":{"arguments":[{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2953:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"2964:2:14","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"2949:3:14"},"nodeType":"YulFunctionCall","src":"2949:18:14"},{"kind":"number","nodeType":"YulLiteral","src":"2969:4:14","type":"","value":"0x30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2945:3:14"},"nodeType":"YulFunctionCall","src":"2945:29:14"},"variables":[{"name":"tenths","nodeType":"YulTypedName","src":"2935:6:14","type":""}]},{"nodeType":"YulAssignment","src":"2984:31:14","value":{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"3001:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"3012:2:14","type":"","value":"10"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2997:3:14"},"nodeType":"YulFunctionCall","src":"2997:18:14"},"variableNames":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2984:9:14"}]},{"nodeType":"YulVariableDeclaration","src":"3024:45:14","value":{"arguments":[{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"3048:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"3059:2:14","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"3044:3:14"},"nodeType":"YulFunctionCall","src":"3044:18:14"},{"kind":"number","nodeType":"YulLiteral","src":"3064:4:14","type":"","value":"0x30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3040:3:14"},"nodeType":"YulFunctionCall","src":"3040:29:14"},"variables":[{"name":"hundreds","nodeType":"YulTypedName","src":"3028:8:14","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3702:61:14","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3729:2:14","type":"","value":"24"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3737:4:14","type":"","value":"0x23"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3747:1:14","type":"","value":"8"},{"name":"prefixUint","nodeType":"YulIdentifier","src":"3750:10:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3743:3:14"},"nodeType":"YulFunctionCall","src":"3743:18:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3733:3:14"},"nodeType":"YulFunctionCall","src":"3733:29:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3725:3:14"},"nodeType":"YulFunctionCall","src":"3725:38:14"},"variables":[{"name":"formattedPrefix","nodeType":"YulTypedName","src":"3706:15:14","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3773:102:14","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3797:3:14","type":"","value":"200"},{"arguments":[{"name":"formattedPrefix","nodeType":"YulIdentifier","src":"3806:15:14"},{"arguments":[{"arguments":[{"name":"units","nodeType":"YulIdentifier","src":"3831:5:14"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3842:1:14","type":"","value":"8"},{"name":"tenths","nodeType":"YulIdentifier","src":"3845:6:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3838:3:14"},"nodeType":"YulFunctionCall","src":"3838:14:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3827:3:14"},"nodeType":"YulFunctionCall","src":"3827:26:14"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3859:2:14","type":"","value":"16"},{"name":"hundreds","nodeType":"YulIdentifier","src":"3863:8:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3855:3:14"},"nodeType":"YulFunctionCall","src":"3855:17:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3823:3:14"},"nodeType":"YulFunctionCall","src":"3823:50:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3802:3:14"},"nodeType":"YulFunctionCall","src":"3802:72:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3793:3:14"},"nodeType":"YulFunctionCall","src":"3793:82:14"},"variables":[{"name":"revertReason","nodeType":"YulTypedName","src":"3777:12:14","type":""}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4390:3:14","type":"","value":"0x0"},{"kind":"number","nodeType":"YulLiteral","src":"4395:66:14","type":"","value":"0x08c379a000000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4383:6:14"},"nodeType":"YulFunctionCall","src":"4383:79:14"},"nodeType":"YulExpressionStatement","src":"4383:79:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4595:4:14","type":"","value":"0x04"},{"kind":"number","nodeType":"YulLiteral","src":"4601:66:14","type":"","value":"0x0000000000000000000000000000000000000000000000000000000000000020"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4588:6:14"},"nodeType":"YulFunctionCall","src":"4588:80:14"},"nodeType":"YulExpressionStatement","src":"4588:80:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4737:4:14","type":"","value":"0x24"},{"kind":"number","nodeType":"YulLiteral","src":"4743:1:14","type":"","value":"7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4730:6:14"},"nodeType":"YulFunctionCall","src":"4730:15:14"},"nodeType":"YulExpressionStatement","src":"4730:15:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4810:4:14","type":"","value":"0x44"},{"name":"revertReason","nodeType":"YulIdentifier","src":"4816:12:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4803:6:14"},"nodeType":"YulFunctionCall","src":"4803:26:14"},"nodeType":"YulExpressionStatement","src":"4803:26:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5033:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5036:3:14","type":"","value":"100"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5026:6:14"},"nodeType":"YulFunctionCall","src":"5026:14:14"},"nodeType":"YulExpressionStatement","src":"5026:14:14"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1245,"isOffset":false,"isSlot":false,"src":"2860:9:14","valueSize":1},{"declaration":1245,"isOffset":false,"isSlot":false,"src":"2891:9:14","valueSize":1},{"declaration":1245,"isOffset":false,"isSlot":false,"src":"2908:9:14","valueSize":1},{"declaration":1245,"isOffset":false,"isSlot":false,"src":"2953:9:14","valueSize":1},{"declaration":1245,"isOffset":false,"isSlot":false,"src":"2984:9:14","valueSize":1},{"declaration":1245,"isOffset":false,"isSlot":false,"src":"3001:9:14","valueSize":1},{"declaration":1245,"isOffset":false,"isSlot":false,"src":"3048:9:14","valueSize":1},{"declaration":1251,"isOffset":false,"isSlot":false,"src":"3750:10:14","valueSize":1}],"id":1260,"nodeType":"InlineAssembly","src":"2556:2490:14"}]},"documentation":{"id":1243,"nodeType":"StructuredDocumentation","src":"1565:104:14","text":" @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported."},"id":1262,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_revert","nodeType":"FunctionDefinition","parameters":{"id":1248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1245,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":1262,"src":"1687:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1244,"name":"uint256","nodeType":"ElementaryTypeName","src":"1687:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1247,"mutability":"mutable","name":"prefix","nodeType":"VariableDeclaration","scope":1262,"src":"1706:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"},"typeName":{"id":1246,"name":"bytes3","nodeType":"ElementaryTypeName","src":"1706:6:14","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}},"visibility":"internal"}],"src":"1686:34:14"},"returnParameters":{"id":1249,"nodeType":"ParameterList","parameters":[],"src":"1726:0:14"},"scope":1744,"src":"1670:3378:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":1743,"linearizedBaseContracts":[1743],"name":"Errors","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1265,"mutability":"constant","name":"ADD_OVERFLOW","nodeType":"VariableDeclaration","scope":1743,"src":"5083:42:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1263,"name":"uint256","nodeType":"ElementaryTypeName","src":"5083:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":1264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5124:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"constant":true,"id":1268,"mutability":"constant","name":"SUB_OVERFLOW","nodeType":"VariableDeclaration","scope":1743,"src":"5131:42:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1266,"name":"uint256","nodeType":"ElementaryTypeName","src":"5131:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":1267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5172:1:14","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":1271,"mutability":"constant","name":"SUB_UNDERFLOW","nodeType":"VariableDeclaration","scope":1743,"src":"5179:43:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1269,"name":"uint256","nodeType":"ElementaryTypeName","src":"5179:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":1270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5221:1:14","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"constant":true,"id":1274,"mutability":"constant","name":"MUL_OVERFLOW","nodeType":"VariableDeclaration","scope":1743,"src":"5228:42:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1272,"name":"uint256","nodeType":"ElementaryTypeName","src":"5228:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":1273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5269:1:14","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"constant":true,"id":1277,"mutability":"constant","name":"ZERO_DIVISION","nodeType":"VariableDeclaration","scope":1743,"src":"5276:43:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1275,"name":"uint256","nodeType":"ElementaryTypeName","src":"5276:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"34","id":1276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5318:1:14","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"visibility":"internal"},{"constant":true,"id":1280,"mutability":"constant","name":"DIV_INTERNAL","nodeType":"VariableDeclaration","scope":1743,"src":"5325:42:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1278,"name":"uint256","nodeType":"ElementaryTypeName","src":"5325:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"35","id":1279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5366:1:14","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"visibility":"internal"},{"constant":true,"id":1283,"mutability":"constant","name":"X_OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":1743,"src":"5373:45:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1281,"name":"uint256","nodeType":"ElementaryTypeName","src":"5373:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"36","id":1282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5417:1:14","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"visibility":"internal"},{"constant":true,"id":1286,"mutability":"constant","name":"Y_OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":1743,"src":"5424:45:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1284,"name":"uint256","nodeType":"ElementaryTypeName","src":"5424:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"37","id":1285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5468:1:14","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"visibility":"internal"},{"constant":true,"id":1289,"mutability":"constant","name":"PRODUCT_OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":1743,"src":"5475:51:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1287,"name":"uint256","nodeType":"ElementaryTypeName","src":"5475:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"38","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5525:1:14","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"visibility":"internal"},{"constant":true,"id":1292,"mutability":"constant","name":"INVALID_EXPONENT","nodeType":"VariableDeclaration","scope":1743,"src":"5532:46:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1290,"name":"uint256","nodeType":"ElementaryTypeName","src":"5532:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"39","id":1291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5577:1:14","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"visibility":"internal"},{"constant":true,"id":1295,"mutability":"constant","name":"OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":1743,"src":"5598:45:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1293,"name":"uint256","nodeType":"ElementaryTypeName","src":"5598:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313030","id":1294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5640:3:14","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"visibility":"internal"},{"constant":true,"id":1298,"mutability":"constant","name":"UNSORTED_ARRAY","nodeType":"VariableDeclaration","scope":1743,"src":"5649:46:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1296,"name":"uint256","nodeType":"ElementaryTypeName","src":"5649:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313031","id":1297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5692:3:14","typeDescriptions":{"typeIdentifier":"t_rational_101_by_1","typeString":"int_const 101"},"value":"101"},"visibility":"internal"},{"constant":true,"id":1301,"mutability":"constant","name":"UNSORTED_TOKENS","nodeType":"VariableDeclaration","scope":1743,"src":"5701:47:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1299,"name":"uint256","nodeType":"ElementaryTypeName","src":"5701:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313032","id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5745:3:14","typeDescriptions":{"typeIdentifier":"t_rational_102_by_1","typeString":"int_const 102"},"value":"102"},"visibility":"internal"},{"constant":true,"id":1304,"mutability":"constant","name":"INPUT_LENGTH_MISMATCH","nodeType":"VariableDeclaration","scope":1743,"src":"5754:53:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1302,"name":"uint256","nodeType":"ElementaryTypeName","src":"5754:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313033","id":1303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5804:3:14","typeDescriptions":{"typeIdentifier":"t_rational_103_by_1","typeString":"int_const 103"},"value":"103"},"visibility":"internal"},{"constant":true,"id":1307,"mutability":"constant","name":"ZERO_TOKEN","nodeType":"VariableDeclaration","scope":1743,"src":"5813:42:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1305,"name":"uint256","nodeType":"ElementaryTypeName","src":"5813:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313034","id":1306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5852:3:14","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},"visibility":"internal"},{"constant":true,"id":1310,"mutability":"constant","name":"MIN_TOKENS","nodeType":"VariableDeclaration","scope":1743,"src":"5882:42:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1308,"name":"uint256","nodeType":"ElementaryTypeName","src":"5882:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323030","id":1309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5921:3:14","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},"visibility":"internal"},{"constant":true,"id":1313,"mutability":"constant","name":"MAX_TOKENS","nodeType":"VariableDeclaration","scope":1743,"src":"5930:42:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1311,"name":"uint256","nodeType":"ElementaryTypeName","src":"5930:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323031","id":1312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5969:3:14","typeDescriptions":{"typeIdentifier":"t_rational_201_by_1","typeString":"int_const 201"},"value":"201"},"visibility":"internal"},{"constant":true,"id":1316,"mutability":"constant","name":"MAX_SWAP_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":1743,"src":"5978:55:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1314,"name":"uint256","nodeType":"ElementaryTypeName","src":"5978:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323032","id":1315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6030:3:14","typeDescriptions":{"typeIdentifier":"t_rational_202_by_1","typeString":"int_const 202"},"value":"202"},"visibility":"internal"},{"constant":true,"id":1319,"mutability":"constant","name":"MIN_SWAP_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":1743,"src":"6039:55:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1317,"name":"uint256","nodeType":"ElementaryTypeName","src":"6039:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323033","id":1318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6091:3:14","typeDescriptions":{"typeIdentifier":"t_rational_203_by_1","typeString":"int_const 203"},"value":"203"},"visibility":"internal"},{"constant":true,"id":1322,"mutability":"constant","name":"MINIMUM_BPT","nodeType":"VariableDeclaration","scope":1743,"src":"6100:43:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1320,"name":"uint256","nodeType":"ElementaryTypeName","src":"6100:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323034","id":1321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6140:3:14","typeDescriptions":{"typeIdentifier":"t_rational_204_by_1","typeString":"int_const 204"},"value":"204"},"visibility":"internal"},{"constant":true,"id":1325,"mutability":"constant","name":"CALLER_NOT_VAULT","nodeType":"VariableDeclaration","scope":1743,"src":"6149:48:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1323,"name":"uint256","nodeType":"ElementaryTypeName","src":"6149:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323035","id":1324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6194:3:14","typeDescriptions":{"typeIdentifier":"t_rational_205_by_1","typeString":"int_const 205"},"value":"205"},"visibility":"internal"},{"constant":true,"id":1328,"mutability":"constant","name":"UNINITIALIZED","nodeType":"VariableDeclaration","scope":1743,"src":"6203:45:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1326,"name":"uint256","nodeType":"ElementaryTypeName","src":"6203:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323036","id":1327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6245:3:14","typeDescriptions":{"typeIdentifier":"t_rational_206_by_1","typeString":"int_const 206"},"value":"206"},"visibility":"internal"},{"constant":true,"id":1331,"mutability":"constant","name":"BPT_IN_MAX_AMOUNT","nodeType":"VariableDeclaration","scope":1743,"src":"6254:49:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1329,"name":"uint256","nodeType":"ElementaryTypeName","src":"6254:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323037","id":1330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6300:3:14","typeDescriptions":{"typeIdentifier":"t_rational_207_by_1","typeString":"int_const 207"},"value":"207"},"visibility":"internal"},{"constant":true,"id":1334,"mutability":"constant","name":"BPT_OUT_MIN_AMOUNT","nodeType":"VariableDeclaration","scope":1743,"src":"6309:50:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"6309:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323038","id":1333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6356:3:14","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},"visibility":"internal"},{"constant":true,"id":1337,"mutability":"constant","name":"EXPIRED_PERMIT","nodeType":"VariableDeclaration","scope":1743,"src":"6365:46:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1335,"name":"uint256","nodeType":"ElementaryTypeName","src":"6365:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323039","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6408:3:14","typeDescriptions":{"typeIdentifier":"t_rational_209_by_1","typeString":"int_const 209"},"value":"209"},"visibility":"internal"},{"constant":true,"id":1340,"mutability":"constant","name":"NOT_TWO_TOKENS","nodeType":"VariableDeclaration","scope":1743,"src":"6417:46:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1338,"name":"uint256","nodeType":"ElementaryTypeName","src":"6417:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323130","id":1339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6460:3:14","typeDescriptions":{"typeIdentifier":"t_rational_210_by_1","typeString":"int_const 210"},"value":"210"},"visibility":"internal"},{"constant":true,"id":1343,"mutability":"constant","name":"DISABLED","nodeType":"VariableDeclaration","scope":1743,"src":"6469:40:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1341,"name":"uint256","nodeType":"ElementaryTypeName","src":"6469:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323131","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6506:3:14","typeDescriptions":{"typeIdentifier":"t_rational_211_by_1","typeString":"int_const 211"},"value":"211"},"visibility":"internal"},{"constant":true,"id":1346,"mutability":"constant","name":"MIN_AMP","nodeType":"VariableDeclaration","scope":1743,"src":"6529:39:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1344,"name":"uint256","nodeType":"ElementaryTypeName","src":"6529:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333030","id":1345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6565:3:14","typeDescriptions":{"typeIdentifier":"t_rational_300_by_1","typeString":"int_const 300"},"value":"300"},"visibility":"internal"},{"constant":true,"id":1349,"mutability":"constant","name":"MAX_AMP","nodeType":"VariableDeclaration","scope":1743,"src":"6574:39:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1347,"name":"uint256","nodeType":"ElementaryTypeName","src":"6574:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333031","id":1348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6610:3:14","typeDescriptions":{"typeIdentifier":"t_rational_301_by_1","typeString":"int_const 301"},"value":"301"},"visibility":"internal"},{"constant":true,"id":1352,"mutability":"constant","name":"MIN_WEIGHT","nodeType":"VariableDeclaration","scope":1743,"src":"6619:42:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1350,"name":"uint256","nodeType":"ElementaryTypeName","src":"6619:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333032","id":1351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6658:3:14","typeDescriptions":{"typeIdentifier":"t_rational_302_by_1","typeString":"int_const 302"},"value":"302"},"visibility":"internal"},{"constant":true,"id":1355,"mutability":"constant","name":"MAX_STABLE_TOKENS","nodeType":"VariableDeclaration","scope":1743,"src":"6667:49:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1353,"name":"uint256","nodeType":"ElementaryTypeName","src":"6667:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333033","id":1354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6713:3:14","typeDescriptions":{"typeIdentifier":"t_rational_303_by_1","typeString":"int_const 303"},"value":"303"},"visibility":"internal"},{"constant":true,"id":1358,"mutability":"constant","name":"MAX_IN_RATIO","nodeType":"VariableDeclaration","scope":1743,"src":"6722:44:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1356,"name":"uint256","nodeType":"ElementaryTypeName","src":"6722:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333034","id":1357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6763:3:14","typeDescriptions":{"typeIdentifier":"t_rational_304_by_1","typeString":"int_const 304"},"value":"304"},"visibility":"internal"},{"constant":true,"id":1361,"mutability":"constant","name":"MAX_OUT_RATIO","nodeType":"VariableDeclaration","scope":1743,"src":"6772:45:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1359,"name":"uint256","nodeType":"ElementaryTypeName","src":"6772:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333035","id":1360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6814:3:14","typeDescriptions":{"typeIdentifier":"t_rational_305_by_1","typeString":"int_const 305"},"value":"305"},"visibility":"internal"},{"constant":true,"id":1364,"mutability":"constant","name":"MIN_BPT_IN_FOR_TOKEN_OUT","nodeType":"VariableDeclaration","scope":1743,"src":"6823:56:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1362,"name":"uint256","nodeType":"ElementaryTypeName","src":"6823:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333036","id":1363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6876:3:14","typeDescriptions":{"typeIdentifier":"t_rational_306_by_1","typeString":"int_const 306"},"value":"306"},"visibility":"internal"},{"constant":true,"id":1367,"mutability":"constant","name":"MAX_OUT_BPT_FOR_TOKEN_IN","nodeType":"VariableDeclaration","scope":1743,"src":"6885:56:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1365,"name":"uint256","nodeType":"ElementaryTypeName","src":"6885:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333037","id":1366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6938:3:14","typeDescriptions":{"typeIdentifier":"t_rational_307_by_1","typeString":"int_const 307"},"value":"307"},"visibility":"internal"},{"constant":true,"id":1370,"mutability":"constant","name":"NORMALIZED_WEIGHT_INVARIANT","nodeType":"VariableDeclaration","scope":1743,"src":"6947:59:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1368,"name":"uint256","nodeType":"ElementaryTypeName","src":"6947:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333038","id":1369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7003:3:14","typeDescriptions":{"typeIdentifier":"t_rational_308_by_1","typeString":"int_const 308"},"value":"308"},"visibility":"internal"},{"constant":true,"id":1373,"mutability":"constant","name":"INVALID_TOKEN","nodeType":"VariableDeclaration","scope":1743,"src":"7012:45:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1371,"name":"uint256","nodeType":"ElementaryTypeName","src":"7012:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333039","id":1372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7054:3:14","typeDescriptions":{"typeIdentifier":"t_rational_309_by_1","typeString":"int_const 309"},"value":"309"},"visibility":"internal"},{"constant":true,"id":1376,"mutability":"constant","name":"UNHANDLED_JOIN_KIND","nodeType":"VariableDeclaration","scope":1743,"src":"7063:51:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1374,"name":"uint256","nodeType":"ElementaryTypeName","src":"7063:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333130","id":1375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7111:3:14","typeDescriptions":{"typeIdentifier":"t_rational_310_by_1","typeString":"int_const 310"},"value":"310"},"visibility":"internal"},{"constant":true,"id":1379,"mutability":"constant","name":"ZERO_INVARIANT","nodeType":"VariableDeclaration","scope":1743,"src":"7120:46:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1377,"name":"uint256","nodeType":"ElementaryTypeName","src":"7120:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333131","id":1378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7163:3:14","typeDescriptions":{"typeIdentifier":"t_rational_311_by_1","typeString":"int_const 311"},"value":"311"},"visibility":"internal"},{"constant":true,"id":1382,"mutability":"constant","name":"ORACLE_INVALID_SECONDS_QUERY","nodeType":"VariableDeclaration","scope":1743,"src":"7172:60:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1380,"name":"uint256","nodeType":"ElementaryTypeName","src":"7172:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333132","id":1381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7229:3:14","typeDescriptions":{"typeIdentifier":"t_rational_312_by_1","typeString":"int_const 312"},"value":"312"},"visibility":"internal"},{"constant":true,"id":1385,"mutability":"constant","name":"ORACLE_NOT_INITIALIZED","nodeType":"VariableDeclaration","scope":1743,"src":"7238:54:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1383,"name":"uint256","nodeType":"ElementaryTypeName","src":"7238:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333133","id":1384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7289:3:14","typeDescriptions":{"typeIdentifier":"t_rational_313_by_1","typeString":"int_const 313"},"value":"313"},"visibility":"internal"},{"constant":true,"id":1388,"mutability":"constant","name":"ORACLE_QUERY_TOO_OLD","nodeType":"VariableDeclaration","scope":1743,"src":"7298:52:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1386,"name":"uint256","nodeType":"ElementaryTypeName","src":"7298:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333134","id":1387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7347:3:14","typeDescriptions":{"typeIdentifier":"t_rational_314_by_1","typeString":"int_const 314"},"value":"314"},"visibility":"internal"},{"constant":true,"id":1391,"mutability":"constant","name":"ORACLE_INVALID_INDEX","nodeType":"VariableDeclaration","scope":1743,"src":"7356:52:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1389,"name":"uint256","nodeType":"ElementaryTypeName","src":"7356:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333135","id":1390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7405:3:14","typeDescriptions":{"typeIdentifier":"t_rational_315_by_1","typeString":"int_const 315"},"value":"315"},"visibility":"internal"},{"constant":true,"id":1394,"mutability":"constant","name":"ORACLE_BAD_SECS","nodeType":"VariableDeclaration","scope":1743,"src":"7414:47:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1392,"name":"uint256","nodeType":"ElementaryTypeName","src":"7414:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333136","id":1393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7458:3:14","typeDescriptions":{"typeIdentifier":"t_rational_316_by_1","typeString":"int_const 316"},"value":"316"},"visibility":"internal"},{"constant":true,"id":1397,"mutability":"constant","name":"AMP_END_TIME_TOO_CLOSE","nodeType":"VariableDeclaration","scope":1743,"src":"7467:54:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1395,"name":"uint256","nodeType":"ElementaryTypeName","src":"7467:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333137","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7518:3:14","typeDescriptions":{"typeIdentifier":"t_rational_317_by_1","typeString":"int_const 317"},"value":"317"},"visibility":"internal"},{"constant":true,"id":1400,"mutability":"constant","name":"AMP_ONGOING_UPDATE","nodeType":"VariableDeclaration","scope":1743,"src":"7527:50:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1398,"name":"uint256","nodeType":"ElementaryTypeName","src":"7527:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333138","id":1399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7574:3:14","typeDescriptions":{"typeIdentifier":"t_rational_318_by_1","typeString":"int_const 318"},"value":"318"},"visibility":"internal"},{"constant":true,"id":1403,"mutability":"constant","name":"AMP_RATE_TOO_HIGH","nodeType":"VariableDeclaration","scope":1743,"src":"7583:49:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1401,"name":"uint256","nodeType":"ElementaryTypeName","src":"7583:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333139","id":1402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7629:3:14","typeDescriptions":{"typeIdentifier":"t_rational_319_by_1","typeString":"int_const 319"},"value":"319"},"visibility":"internal"},{"constant":true,"id":1406,"mutability":"constant","name":"AMP_NO_ONGOING_UPDATE","nodeType":"VariableDeclaration","scope":1743,"src":"7638:53:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"7638:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333230","id":1405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7688:3:14","typeDescriptions":{"typeIdentifier":"t_rational_320_by_1","typeString":"int_const 320"},"value":"320"},"visibility":"internal"},{"constant":true,"id":1409,"mutability":"constant","name":"STABLE_INVARIANT_DIDNT_CONVERGE","nodeType":"VariableDeclaration","scope":1743,"src":"7697:63:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1407,"name":"uint256","nodeType":"ElementaryTypeName","src":"7697:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333231","id":1408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7757:3:14","typeDescriptions":{"typeIdentifier":"t_rational_321_by_1","typeString":"int_const 321"},"value":"321"},"visibility":"internal"},{"constant":true,"id":1412,"mutability":"constant","name":"STABLE_GET_BALANCE_DIDNT_CONVERGE","nodeType":"VariableDeclaration","scope":1743,"src":"7766:65:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1410,"name":"uint256","nodeType":"ElementaryTypeName","src":"7766:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333232","id":1411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7828:3:14","typeDescriptions":{"typeIdentifier":"t_rational_322_by_1","typeString":"int_const 322"},"value":"322"},"visibility":"internal"},{"constant":true,"id":1415,"mutability":"constant","name":"RELAYER_NOT_CONTRACT","nodeType":"VariableDeclaration","scope":1743,"src":"7837:52:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1413,"name":"uint256","nodeType":"ElementaryTypeName","src":"7837:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333233","id":1414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7886:3:14","typeDescriptions":{"typeIdentifier":"t_rational_323_by_1","typeString":"int_const 323"},"value":"323"},"visibility":"internal"},{"constant":true,"id":1418,"mutability":"constant","name":"BASE_POOL_RELAYER_NOT_CALLED","nodeType":"VariableDeclaration","scope":1743,"src":"7895:60:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1416,"name":"uint256","nodeType":"ElementaryTypeName","src":"7895:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333234","id":1417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7952:3:14","typeDescriptions":{"typeIdentifier":"t_rational_324_by_1","typeString":"int_const 324"},"value":"324"},"visibility":"internal"},{"constant":true,"id":1421,"mutability":"constant","name":"REBALANCING_RELAYER_REENTERED","nodeType":"VariableDeclaration","scope":1743,"src":"7961:61:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1419,"name":"uint256","nodeType":"ElementaryTypeName","src":"7961:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333235","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8019:3:14","typeDescriptions":{"typeIdentifier":"t_rational_325_by_1","typeString":"int_const 325"},"value":"325"},"visibility":"internal"},{"constant":true,"id":1424,"mutability":"constant","name":"GRADUAL_UPDATE_TIME_TRAVEL","nodeType":"VariableDeclaration","scope":1743,"src":"8028:58:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1422,"name":"uint256","nodeType":"ElementaryTypeName","src":"8028:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333236","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8083:3:14","typeDescriptions":{"typeIdentifier":"t_rational_326_by_1","typeString":"int_const 326"},"value":"326"},"visibility":"internal"},{"constant":true,"id":1427,"mutability":"constant","name":"SWAPS_DISABLED","nodeType":"VariableDeclaration","scope":1743,"src":"8092:46:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1425,"name":"uint256","nodeType":"ElementaryTypeName","src":"8092:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333237","id":1426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8135:3:14","typeDescriptions":{"typeIdentifier":"t_rational_327_by_1","typeString":"int_const 327"},"value":"327"},"visibility":"internal"},{"constant":true,"id":1430,"mutability":"constant","name":"CALLER_IS_NOT_LBP_OWNER","nodeType":"VariableDeclaration","scope":1743,"src":"8144:55:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1428,"name":"uint256","nodeType":"ElementaryTypeName","src":"8144:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333238","id":1429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8196:3:14","typeDescriptions":{"typeIdentifier":"t_rational_328_by_1","typeString":"int_const 328"},"value":"328"},"visibility":"internal"},{"constant":true,"id":1433,"mutability":"constant","name":"PRICE_RATE_OVERFLOW","nodeType":"VariableDeclaration","scope":1743,"src":"8205:51:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1431,"name":"uint256","nodeType":"ElementaryTypeName","src":"8205:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333239","id":1432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8253:3:14","typeDescriptions":{"typeIdentifier":"t_rational_329_by_1","typeString":"int_const 329"},"value":"329"},"visibility":"internal"},{"constant":true,"id":1436,"mutability":"constant","name":"INVALID_JOIN_EXIT_KIND_WHILE_SWAPS_DISABLED","nodeType":"VariableDeclaration","scope":1743,"src":"8262:75:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1434,"name":"uint256","nodeType":"ElementaryTypeName","src":"8262:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333330","id":1435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8334:3:14","typeDescriptions":{"typeIdentifier":"t_rational_330_by_1","typeString":"int_const 330"},"value":"330"},"visibility":"internal"},{"constant":true,"id":1439,"mutability":"constant","name":"WEIGHT_CHANGE_TOO_FAST","nodeType":"VariableDeclaration","scope":1743,"src":"8343:54:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1437,"name":"uint256","nodeType":"ElementaryTypeName","src":"8343:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333331","id":1438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8394:3:14","typeDescriptions":{"typeIdentifier":"t_rational_331_by_1","typeString":"int_const 331"},"value":"331"},"visibility":"internal"},{"constant":true,"id":1442,"mutability":"constant","name":"LOWER_GREATER_THAN_UPPER_TARGET","nodeType":"VariableDeclaration","scope":1743,"src":"8403:63:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1440,"name":"uint256","nodeType":"ElementaryTypeName","src":"8403:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333332","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8463:3:14","typeDescriptions":{"typeIdentifier":"t_rational_332_by_1","typeString":"int_const 332"},"value":"332"},"visibility":"internal"},{"constant":true,"id":1445,"mutability":"constant","name":"UPPER_TARGET_TOO_HIGH","nodeType":"VariableDeclaration","scope":1743,"src":"8472:53:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1443,"name":"uint256","nodeType":"ElementaryTypeName","src":"8472:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333333","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8522:3:14","typeDescriptions":{"typeIdentifier":"t_rational_333_by_1","typeString":"int_const 333"},"value":"333"},"visibility":"internal"},{"constant":true,"id":1448,"mutability":"constant","name":"UNHANDLED_BY_LINEAR_POOL","nodeType":"VariableDeclaration","scope":1743,"src":"8531:56:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1446,"name":"uint256","nodeType":"ElementaryTypeName","src":"8531:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333334","id":1447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8584:3:14","typeDescriptions":{"typeIdentifier":"t_rational_334_by_1","typeString":"int_const 334"},"value":"334"},"visibility":"internal"},{"constant":true,"id":1451,"mutability":"constant","name":"OUT_OF_TARGET_RANGE","nodeType":"VariableDeclaration","scope":1743,"src":"8593:51:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1449,"name":"uint256","nodeType":"ElementaryTypeName","src":"8593:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333335","id":1450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8641:3:14","typeDescriptions":{"typeIdentifier":"t_rational_335_by_1","typeString":"int_const 335"},"value":"335"},"visibility":"internal"},{"constant":true,"id":1454,"mutability":"constant","name":"UNHANDLED_EXIT_KIND","nodeType":"VariableDeclaration","scope":1743,"src":"8650:51:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1452,"name":"uint256","nodeType":"ElementaryTypeName","src":"8650:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333336","id":1453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8698:3:14","typeDescriptions":{"typeIdentifier":"t_rational_336_by_1","typeString":"int_const 336"},"value":"336"},"visibility":"internal"},{"constant":true,"id":1457,"mutability":"constant","name":"UNAUTHORIZED_EXIT","nodeType":"VariableDeclaration","scope":1743,"src":"8707:49:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1455,"name":"uint256","nodeType":"ElementaryTypeName","src":"8707:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333337","id":1456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8753:3:14","typeDescriptions":{"typeIdentifier":"t_rational_337_by_1","typeString":"int_const 337"},"value":"337"},"visibility":"internal"},{"constant":true,"id":1460,"mutability":"constant","name":"MAX_MANAGEMENT_SWAP_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":1743,"src":"8762:66:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1458,"name":"uint256","nodeType":"ElementaryTypeName","src":"8762:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333338","id":1459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8825:3:14","typeDescriptions":{"typeIdentifier":"t_rational_338_by_1","typeString":"int_const 338"},"value":"338"},"visibility":"internal"},{"constant":true,"id":1463,"mutability":"constant","name":"UNHANDLED_BY_MANAGED_POOL","nodeType":"VariableDeclaration","scope":1743,"src":"8834:57:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1461,"name":"uint256","nodeType":"ElementaryTypeName","src":"8834:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333339","id":1462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8888:3:14","typeDescriptions":{"typeIdentifier":"t_rational_339_by_1","typeString":"int_const 339"},"value":"339"},"visibility":"internal"},{"constant":true,"id":1466,"mutability":"constant","name":"UNHANDLED_BY_PHANTOM_POOL","nodeType":"VariableDeclaration","scope":1743,"src":"8897:57:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1464,"name":"uint256","nodeType":"ElementaryTypeName","src":"8897:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333430","id":1465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8951:3:14","typeDescriptions":{"typeIdentifier":"t_rational_340_by_1","typeString":"int_const 340"},"value":"340"},"visibility":"internal"},{"constant":true,"id":1469,"mutability":"constant","name":"TOKEN_DOES_NOT_HAVE_RATE_PROVIDER","nodeType":"VariableDeclaration","scope":1743,"src":"8960:65:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1467,"name":"uint256","nodeType":"ElementaryTypeName","src":"8960:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333431","id":1468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9022:3:14","typeDescriptions":{"typeIdentifier":"t_rational_341_by_1","typeString":"int_const 341"},"value":"341"},"visibility":"internal"},{"constant":true,"id":1472,"mutability":"constant","name":"INVALID_INITIALIZATION","nodeType":"VariableDeclaration","scope":1743,"src":"9031:54:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1470,"name":"uint256","nodeType":"ElementaryTypeName","src":"9031:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333432","id":1471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9082:3:14","typeDescriptions":{"typeIdentifier":"t_rational_342_by_1","typeString":"int_const 342"},"value":"342"},"visibility":"internal"},{"constant":true,"id":1475,"mutability":"constant","name":"OUT_OF_NEW_TARGET_RANGE","nodeType":"VariableDeclaration","scope":1743,"src":"9091:55:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1473,"name":"uint256","nodeType":"ElementaryTypeName","src":"9091:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333433","id":1474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9143:3:14","typeDescriptions":{"typeIdentifier":"t_rational_343_by_1","typeString":"int_const 343"},"value":"343"},"visibility":"internal"},{"constant":true,"id":1478,"mutability":"constant","name":"FEATURE_DISABLED","nodeType":"VariableDeclaration","scope":1743,"src":"9152:48:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1476,"name":"uint256","nodeType":"ElementaryTypeName","src":"9152:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333434","id":1477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9197:3:14","typeDescriptions":{"typeIdentifier":"t_rational_344_by_1","typeString":"int_const 344"},"value":"344"},"visibility":"internal"},{"constant":true,"id":1481,"mutability":"constant","name":"UNINITIALIZED_POOL_CONTROLLER","nodeType":"VariableDeclaration","scope":1743,"src":"9206:61:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1479,"name":"uint256","nodeType":"ElementaryTypeName","src":"9206:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333435","id":1480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9264:3:14","typeDescriptions":{"typeIdentifier":"t_rational_345_by_1","typeString":"int_const 345"},"value":"345"},"visibility":"internal"},{"constant":true,"id":1484,"mutability":"constant","name":"SET_SWAP_FEE_DURING_FEE_CHANGE","nodeType":"VariableDeclaration","scope":1743,"src":"9273:62:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1482,"name":"uint256","nodeType":"ElementaryTypeName","src":"9273:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333436","id":1483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9332:3:14","typeDescriptions":{"typeIdentifier":"t_rational_346_by_1","typeString":"int_const 346"},"value":"346"},"visibility":"internal"},{"constant":true,"id":1487,"mutability":"constant","name":"SET_SWAP_FEE_PENDING_FEE_CHANGE","nodeType":"VariableDeclaration","scope":1743,"src":"9341:63:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1485,"name":"uint256","nodeType":"ElementaryTypeName","src":"9341:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333437","id":1486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9401:3:14","typeDescriptions":{"typeIdentifier":"t_rational_347_by_1","typeString":"int_const 347"},"value":"347"},"visibility":"internal"},{"constant":true,"id":1490,"mutability":"constant","name":"CHANGE_TOKENS_DURING_WEIGHT_CHANGE","nodeType":"VariableDeclaration","scope":1743,"src":"9410:66:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1488,"name":"uint256","nodeType":"ElementaryTypeName","src":"9410:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333438","id":1489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9473:3:14","typeDescriptions":{"typeIdentifier":"t_rational_348_by_1","typeString":"int_const 348"},"value":"348"},"visibility":"internal"},{"constant":true,"id":1493,"mutability":"constant","name":"CHANGE_TOKENS_PENDING_WEIGHT_CHANGE","nodeType":"VariableDeclaration","scope":1743,"src":"9482:67:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1491,"name":"uint256","nodeType":"ElementaryTypeName","src":"9482:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333439","id":1492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9546:3:14","typeDescriptions":{"typeIdentifier":"t_rational_349_by_1","typeString":"int_const 349"},"value":"349"},"visibility":"internal"},{"constant":true,"id":1496,"mutability":"constant","name":"MAX_WEIGHT","nodeType":"VariableDeclaration","scope":1743,"src":"9555:42:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"9555:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333530","id":1495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9594:3:14","typeDescriptions":{"typeIdentifier":"t_rational_350_by_1","typeString":"int_const 350"},"value":"350"},"visibility":"internal"},{"constant":true,"id":1499,"mutability":"constant","name":"UNAUTHORIZED_JOIN","nodeType":"VariableDeclaration","scope":1743,"src":"9603:49:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1497,"name":"uint256","nodeType":"ElementaryTypeName","src":"9603:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333531","id":1498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9649:3:14","typeDescriptions":{"typeIdentifier":"t_rational_351_by_1","typeString":"int_const 351"},"value":"351"},"visibility":"internal"},{"constant":true,"id":1502,"mutability":"constant","name":"MAX_MANAGEMENT_AUM_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":1743,"src":"9658:65:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1500,"name":"uint256","nodeType":"ElementaryTypeName","src":"9658:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333532","id":1501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9720:3:14","typeDescriptions":{"typeIdentifier":"t_rational_352_by_1","typeString":"int_const 352"},"value":"352"},"visibility":"internal"},{"constant":true,"id":1505,"mutability":"constant","name":"FRACTIONAL_TARGET","nodeType":"VariableDeclaration","scope":1743,"src":"9729:49:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1503,"name":"uint256","nodeType":"ElementaryTypeName","src":"9729:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333533","id":1504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9775:3:14","typeDescriptions":{"typeIdentifier":"t_rational_353_by_1","typeString":"int_const 353"},"value":"353"},"visibility":"internal"},{"constant":true,"id":1508,"mutability":"constant","name":"REENTRANCY","nodeType":"VariableDeclaration","scope":1743,"src":"9796:42:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1506,"name":"uint256","nodeType":"ElementaryTypeName","src":"9796:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343030","id":1507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9835:3:14","typeDescriptions":{"typeIdentifier":"t_rational_400_by_1","typeString":"int_const 400"},"value":"400"},"visibility":"internal"},{"constant":true,"id":1511,"mutability":"constant","name":"SENDER_NOT_ALLOWED","nodeType":"VariableDeclaration","scope":1743,"src":"9844:50:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1509,"name":"uint256","nodeType":"ElementaryTypeName","src":"9844:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343031","id":1510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9891:3:14","typeDescriptions":{"typeIdentifier":"t_rational_401_by_1","typeString":"int_const 401"},"value":"401"},"visibility":"internal"},{"constant":true,"id":1514,"mutability":"constant","name":"PAUSED","nodeType":"VariableDeclaration","scope":1743,"src":"9900:38:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1512,"name":"uint256","nodeType":"ElementaryTypeName","src":"9900:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343032","id":1513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9935:3:14","typeDescriptions":{"typeIdentifier":"t_rational_402_by_1","typeString":"int_const 402"},"value":"402"},"visibility":"internal"},{"constant":true,"id":1517,"mutability":"constant","name":"PAUSE_WINDOW_EXPIRED","nodeType":"VariableDeclaration","scope":1743,"src":"9944:52:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1515,"name":"uint256","nodeType":"ElementaryTypeName","src":"9944:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343033","id":1516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9993:3:14","typeDescriptions":{"typeIdentifier":"t_rational_403_by_1","typeString":"int_const 403"},"value":"403"},"visibility":"internal"},{"constant":true,"id":1520,"mutability":"constant","name":"MAX_PAUSE_WINDOW_DURATION","nodeType":"VariableDeclaration","scope":1743,"src":"10002:57:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1518,"name":"uint256","nodeType":"ElementaryTypeName","src":"10002:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343034","id":1519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10056:3:14","typeDescriptions":{"typeIdentifier":"t_rational_404_by_1","typeString":"int_const 404"},"value":"404"},"visibility":"internal"},{"constant":true,"id":1523,"mutability":"constant","name":"MAX_BUFFER_PERIOD_DURATION","nodeType":"VariableDeclaration","scope":1743,"src":"10065:58:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1521,"name":"uint256","nodeType":"ElementaryTypeName","src":"10065:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343035","id":1522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10120:3:14","typeDescriptions":{"typeIdentifier":"t_rational_405_by_1","typeString":"int_const 405"},"value":"405"},"visibility":"internal"},{"constant":true,"id":1526,"mutability":"constant","name":"INSUFFICIENT_BALANCE","nodeType":"VariableDeclaration","scope":1743,"src":"10129:52:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1524,"name":"uint256","nodeType":"ElementaryTypeName","src":"10129:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343036","id":1525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10178:3:14","typeDescriptions":{"typeIdentifier":"t_rational_406_by_1","typeString":"int_const 406"},"value":"406"},"visibility":"internal"},{"constant":true,"id":1529,"mutability":"constant","name":"INSUFFICIENT_ALLOWANCE","nodeType":"VariableDeclaration","scope":1743,"src":"10187:54:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1527,"name":"uint256","nodeType":"ElementaryTypeName","src":"10187:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343037","id":1528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10238:3:14","typeDescriptions":{"typeIdentifier":"t_rational_407_by_1","typeString":"int_const 407"},"value":"407"},"visibility":"internal"},{"constant":true,"id":1532,"mutability":"constant","name":"ERC20_TRANSFER_FROM_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":1743,"src":"10247:64:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1530,"name":"uint256","nodeType":"ElementaryTypeName","src":"10247:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343038","id":1531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10308:3:14","typeDescriptions":{"typeIdentifier":"t_rational_408_by_1","typeString":"int_const 408"},"value":"408"},"visibility":"internal"},{"constant":true,"id":1535,"mutability":"constant","name":"ERC20_TRANSFER_TO_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":1743,"src":"10317:62:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1533,"name":"uint256","nodeType":"ElementaryTypeName","src":"10317:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343039","id":1534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10376:3:14","typeDescriptions":{"typeIdentifier":"t_rational_409_by_1","typeString":"int_const 409"},"value":"409"},"visibility":"internal"},{"constant":true,"id":1538,"mutability":"constant","name":"ERC20_MINT_TO_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":1743,"src":"10385:58:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1536,"name":"uint256","nodeType":"ElementaryTypeName","src":"10385:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343130","id":1537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10440:3:14","typeDescriptions":{"typeIdentifier":"t_rational_410_by_1","typeString":"int_const 410"},"value":"410"},"visibility":"internal"},{"constant":true,"id":1541,"mutability":"constant","name":"ERC20_BURN_FROM_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":1743,"src":"10449:60:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1539,"name":"uint256","nodeType":"ElementaryTypeName","src":"10449:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343131","id":1540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10506:3:14","typeDescriptions":{"typeIdentifier":"t_rational_411_by_1","typeString":"int_const 411"},"value":"411"},"visibility":"internal"},{"constant":true,"id":1544,"mutability":"constant","name":"ERC20_APPROVE_FROM_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":1743,"src":"10515:63:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1542,"name":"uint256","nodeType":"ElementaryTypeName","src":"10515:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343132","id":1543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10575:3:14","typeDescriptions":{"typeIdentifier":"t_rational_412_by_1","typeString":"int_const 412"},"value":"412"},"visibility":"internal"},{"constant":true,"id":1547,"mutability":"constant","name":"ERC20_APPROVE_TO_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":1743,"src":"10584:61:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1545,"name":"uint256","nodeType":"ElementaryTypeName","src":"10584:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343133","id":1546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10642:3:14","typeDescriptions":{"typeIdentifier":"t_rational_413_by_1","typeString":"int_const 413"},"value":"413"},"visibility":"internal"},{"constant":true,"id":1550,"mutability":"constant","name":"ERC20_TRANSFER_EXCEEDS_ALLOWANCE","nodeType":"VariableDeclaration","scope":1743,"src":"10651:64:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1548,"name":"uint256","nodeType":"ElementaryTypeName","src":"10651:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343134","id":1549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10712:3:14","typeDescriptions":{"typeIdentifier":"t_rational_414_by_1","typeString":"int_const 414"},"value":"414"},"visibility":"internal"},{"constant":true,"id":1553,"mutability":"constant","name":"ERC20_DECREASED_ALLOWANCE_BELOW_ZERO","nodeType":"VariableDeclaration","scope":1743,"src":"10721:68:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1551,"name":"uint256","nodeType":"ElementaryTypeName","src":"10721:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343135","id":1552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10786:3:14","typeDescriptions":{"typeIdentifier":"t_rational_415_by_1","typeString":"int_const 415"},"value":"415"},"visibility":"internal"},{"constant":true,"id":1556,"mutability":"constant","name":"ERC20_TRANSFER_EXCEEDS_BALANCE","nodeType":"VariableDeclaration","scope":1743,"src":"10795:62:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1554,"name":"uint256","nodeType":"ElementaryTypeName","src":"10795:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343136","id":1555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10854:3:14","typeDescriptions":{"typeIdentifier":"t_rational_416_by_1","typeString":"int_const 416"},"value":"416"},"visibility":"internal"},{"constant":true,"id":1559,"mutability":"constant","name":"ERC20_BURN_EXCEEDS_ALLOWANCE","nodeType":"VariableDeclaration","scope":1743,"src":"10863:60:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1557,"name":"uint256","nodeType":"ElementaryTypeName","src":"10863:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343137","id":1558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10920:3:14","typeDescriptions":{"typeIdentifier":"t_rational_417_by_1","typeString":"int_const 417"},"value":"417"},"visibility":"internal"},{"constant":true,"id":1562,"mutability":"constant","name":"SAFE_ERC20_CALL_FAILED","nodeType":"VariableDeclaration","scope":1743,"src":"10929:54:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1560,"name":"uint256","nodeType":"ElementaryTypeName","src":"10929:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343138","id":1561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10980:3:14","typeDescriptions":{"typeIdentifier":"t_rational_418_by_1","typeString":"int_const 418"},"value":"418"},"visibility":"internal"},{"constant":true,"id":1565,"mutability":"constant","name":"ADDRESS_INSUFFICIENT_BALANCE","nodeType":"VariableDeclaration","scope":1743,"src":"10989:60:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1563,"name":"uint256","nodeType":"ElementaryTypeName","src":"10989:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343139","id":1564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11046:3:14","typeDescriptions":{"typeIdentifier":"t_rational_419_by_1","typeString":"int_const 419"},"value":"419"},"visibility":"internal"},{"constant":true,"id":1568,"mutability":"constant","name":"ADDRESS_CANNOT_SEND_VALUE","nodeType":"VariableDeclaration","scope":1743,"src":"11055:57:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1566,"name":"uint256","nodeType":"ElementaryTypeName","src":"11055:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343230","id":1567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11109:3:14","typeDescriptions":{"typeIdentifier":"t_rational_420_by_1","typeString":"int_const 420"},"value":"420"},"visibility":"internal"},{"constant":true,"id":1571,"mutability":"constant","name":"SAFE_CAST_VALUE_CANT_FIT_INT256","nodeType":"VariableDeclaration","scope":1743,"src":"11118:63:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1569,"name":"uint256","nodeType":"ElementaryTypeName","src":"11118:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343231","id":1570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11178:3:14","typeDescriptions":{"typeIdentifier":"t_rational_421_by_1","typeString":"int_const 421"},"value":"421"},"visibility":"internal"},{"constant":true,"id":1574,"mutability":"constant","name":"GRANT_SENDER_NOT_ADMIN","nodeType":"VariableDeclaration","scope":1743,"src":"11187:54:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1572,"name":"uint256","nodeType":"ElementaryTypeName","src":"11187:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343232","id":1573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11238:3:14","typeDescriptions":{"typeIdentifier":"t_rational_422_by_1","typeString":"int_const 422"},"value":"422"},"visibility":"internal"},{"constant":true,"id":1577,"mutability":"constant","name":"REVOKE_SENDER_NOT_ADMIN","nodeType":"VariableDeclaration","scope":1743,"src":"11247:55:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1575,"name":"uint256","nodeType":"ElementaryTypeName","src":"11247:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343233","id":1576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11299:3:14","typeDescriptions":{"typeIdentifier":"t_rational_423_by_1","typeString":"int_const 423"},"value":"423"},"visibility":"internal"},{"constant":true,"id":1580,"mutability":"constant","name":"RENOUNCE_SENDER_NOT_ALLOWED","nodeType":"VariableDeclaration","scope":1743,"src":"11308:59:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1578,"name":"uint256","nodeType":"ElementaryTypeName","src":"11308:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343234","id":1579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11364:3:14","typeDescriptions":{"typeIdentifier":"t_rational_424_by_1","typeString":"int_const 424"},"value":"424"},"visibility":"internal"},{"constant":true,"id":1583,"mutability":"constant","name":"BUFFER_PERIOD_EXPIRED","nodeType":"VariableDeclaration","scope":1743,"src":"11373:53:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1581,"name":"uint256","nodeType":"ElementaryTypeName","src":"11373:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343235","id":1582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11423:3:14","typeDescriptions":{"typeIdentifier":"t_rational_425_by_1","typeString":"int_const 425"},"value":"425"},"visibility":"internal"},{"constant":true,"id":1586,"mutability":"constant","name":"CALLER_IS_NOT_OWNER","nodeType":"VariableDeclaration","scope":1743,"src":"11432:51:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1584,"name":"uint256","nodeType":"ElementaryTypeName","src":"11432:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343236","id":1585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11480:3:14","typeDescriptions":{"typeIdentifier":"t_rational_426_by_1","typeString":"int_const 426"},"value":"426"},"visibility":"internal"},{"constant":true,"id":1589,"mutability":"constant","name":"NEW_OWNER_IS_ZERO","nodeType":"VariableDeclaration","scope":1743,"src":"11489:49:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1587,"name":"uint256","nodeType":"ElementaryTypeName","src":"11489:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343237","id":1588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11535:3:14","typeDescriptions":{"typeIdentifier":"t_rational_427_by_1","typeString":"int_const 427"},"value":"427"},"visibility":"internal"},{"constant":true,"id":1592,"mutability":"constant","name":"CODE_DEPLOYMENT_FAILED","nodeType":"VariableDeclaration","scope":1743,"src":"11544:54:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1590,"name":"uint256","nodeType":"ElementaryTypeName","src":"11544:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343238","id":1591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11595:3:14","typeDescriptions":{"typeIdentifier":"t_rational_428_by_1","typeString":"int_const 428"},"value":"428"},"visibility":"internal"},{"constant":true,"id":1595,"mutability":"constant","name":"CALL_TO_NON_CONTRACT","nodeType":"VariableDeclaration","scope":1743,"src":"11604:52:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1593,"name":"uint256","nodeType":"ElementaryTypeName","src":"11604:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343239","id":1594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11653:3:14","typeDescriptions":{"typeIdentifier":"t_rational_429_by_1","typeString":"int_const 429"},"value":"429"},"visibility":"internal"},{"constant":true,"id":1598,"mutability":"constant","name":"LOW_LEVEL_CALL_FAILED","nodeType":"VariableDeclaration","scope":1743,"src":"11662:53:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1596,"name":"uint256","nodeType":"ElementaryTypeName","src":"11662:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343330","id":1597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11712:3:14","typeDescriptions":{"typeIdentifier":"t_rational_430_by_1","typeString":"int_const 430"},"value":"430"},"visibility":"internal"},{"constant":true,"id":1601,"mutability":"constant","name":"NOT_PAUSED","nodeType":"VariableDeclaration","scope":1743,"src":"11721:42:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1599,"name":"uint256","nodeType":"ElementaryTypeName","src":"11721:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343331","id":1600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11760:3:14","typeDescriptions":{"typeIdentifier":"t_rational_431_by_1","typeString":"int_const 431"},"value":"431"},"visibility":"internal"},{"constant":true,"id":1604,"mutability":"constant","name":"ADDRESS_ALREADY_ALLOWLISTED","nodeType":"VariableDeclaration","scope":1743,"src":"11769:59:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1602,"name":"uint256","nodeType":"ElementaryTypeName","src":"11769:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343332","id":1603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11825:3:14","typeDescriptions":{"typeIdentifier":"t_rational_432_by_1","typeString":"int_const 432"},"value":"432"},"visibility":"internal"},{"constant":true,"id":1607,"mutability":"constant","name":"ADDRESS_NOT_ALLOWLISTED","nodeType":"VariableDeclaration","scope":1743,"src":"11834:55:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1605,"name":"uint256","nodeType":"ElementaryTypeName","src":"11834:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343333","id":1606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11886:3:14","typeDescriptions":{"typeIdentifier":"t_rational_433_by_1","typeString":"int_const 433"},"value":"433"},"visibility":"internal"},{"constant":true,"id":1610,"mutability":"constant","name":"ERC20_BURN_EXCEEDS_BALANCE","nodeType":"VariableDeclaration","scope":1743,"src":"11895:58:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1608,"name":"uint256","nodeType":"ElementaryTypeName","src":"11895:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343334","id":1609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11950:3:14","typeDescriptions":{"typeIdentifier":"t_rational_434_by_1","typeString":"int_const 434"},"value":"434"},"visibility":"internal"},{"constant":true,"id":1613,"mutability":"constant","name":"INVALID_OPERATION","nodeType":"VariableDeclaration","scope":1743,"src":"11959:49:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1611,"name":"uint256","nodeType":"ElementaryTypeName","src":"11959:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343335","id":1612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12005:3:14","typeDescriptions":{"typeIdentifier":"t_rational_435_by_1","typeString":"int_const 435"},"value":"435"},"visibility":"internal"},{"constant":true,"id":1616,"mutability":"constant","name":"CODEC_OVERFLOW","nodeType":"VariableDeclaration","scope":1743,"src":"12014:46:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1614,"name":"uint256","nodeType":"ElementaryTypeName","src":"12014:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343336","id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12057:3:14","typeDescriptions":{"typeIdentifier":"t_rational_436_by_1","typeString":"int_const 436"},"value":"436"},"visibility":"internal"},{"constant":true,"id":1619,"mutability":"constant","name":"IN_RECOVERY_MODE","nodeType":"VariableDeclaration","scope":1743,"src":"12066:48:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1617,"name":"uint256","nodeType":"ElementaryTypeName","src":"12066:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343337","id":1618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12111:3:14","typeDescriptions":{"typeIdentifier":"t_rational_437_by_1","typeString":"int_const 437"},"value":"437"},"visibility":"internal"},{"constant":true,"id":1622,"mutability":"constant","name":"NOT_IN_RECOVERY_MODE","nodeType":"VariableDeclaration","scope":1743,"src":"12120:52:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1620,"name":"uint256","nodeType":"ElementaryTypeName","src":"12120:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343338","id":1621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12169:3:14","typeDescriptions":{"typeIdentifier":"t_rational_438_by_1","typeString":"int_const 438"},"value":"438"},"visibility":"internal"},{"constant":true,"id":1625,"mutability":"constant","name":"INDUCED_FAILURE","nodeType":"VariableDeclaration","scope":1743,"src":"12178:47:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1623,"name":"uint256","nodeType":"ElementaryTypeName","src":"12178:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343339","id":1624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12222:3:14","typeDescriptions":{"typeIdentifier":"t_rational_439_by_1","typeString":"int_const 439"},"value":"439"},"visibility":"internal"},{"constant":true,"id":1628,"mutability":"constant","name":"EXPIRED_SIGNATURE","nodeType":"VariableDeclaration","scope":1743,"src":"12231:49:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1626,"name":"uint256","nodeType":"ElementaryTypeName","src":"12231:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343430","id":1627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12277:3:14","typeDescriptions":{"typeIdentifier":"t_rational_440_by_1","typeString":"int_const 440"},"value":"440"},"visibility":"internal"},{"constant":true,"id":1631,"mutability":"constant","name":"MALFORMED_SIGNATURE","nodeType":"VariableDeclaration","scope":1743,"src":"12286:51:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1629,"name":"uint256","nodeType":"ElementaryTypeName","src":"12286:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343431","id":1630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12334:3:14","typeDescriptions":{"typeIdentifier":"t_rational_441_by_1","typeString":"int_const 441"},"value":"441"},"visibility":"internal"},{"constant":true,"id":1634,"mutability":"constant","name":"SAFE_CAST_VALUE_CANT_FIT_UINT64","nodeType":"VariableDeclaration","scope":1743,"src":"12343:63:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1632,"name":"uint256","nodeType":"ElementaryTypeName","src":"12343:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343432","id":1633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12403:3:14","typeDescriptions":{"typeIdentifier":"t_rational_442_by_1","typeString":"int_const 442"},"value":"442"},"visibility":"internal"},{"constant":true,"id":1637,"mutability":"constant","name":"UNHANDLED_FEE_TYPE","nodeType":"VariableDeclaration","scope":1743,"src":"12412:50:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1635,"name":"uint256","nodeType":"ElementaryTypeName","src":"12412:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343433","id":1636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12459:3:14","typeDescriptions":{"typeIdentifier":"t_rational_443_by_1","typeString":"int_const 443"},"value":"443"},"visibility":"internal"},{"constant":true,"id":1640,"mutability":"constant","name":"INVALID_POOL_ID","nodeType":"VariableDeclaration","scope":1743,"src":"12482:47:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1638,"name":"uint256","nodeType":"ElementaryTypeName","src":"12482:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353030","id":1639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12526:3:14","typeDescriptions":{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},"value":"500"},"visibility":"internal"},{"constant":true,"id":1643,"mutability":"constant","name":"CALLER_NOT_POOL","nodeType":"VariableDeclaration","scope":1743,"src":"12535:47:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1641,"name":"uint256","nodeType":"ElementaryTypeName","src":"12535:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353031","id":1642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12579:3:14","typeDescriptions":{"typeIdentifier":"t_rational_501_by_1","typeString":"int_const 501"},"value":"501"},"visibility":"internal"},{"constant":true,"id":1646,"mutability":"constant","name":"SENDER_NOT_ASSET_MANAGER","nodeType":"VariableDeclaration","scope":1743,"src":"12588:56:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1644,"name":"uint256","nodeType":"ElementaryTypeName","src":"12588:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353032","id":1645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12641:3:14","typeDescriptions":{"typeIdentifier":"t_rational_502_by_1","typeString":"int_const 502"},"value":"502"},"visibility":"internal"},{"constant":true,"id":1649,"mutability":"constant","name":"USER_DOESNT_ALLOW_RELAYER","nodeType":"VariableDeclaration","scope":1743,"src":"12650:57:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1647,"name":"uint256","nodeType":"ElementaryTypeName","src":"12650:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353033","id":1648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12704:3:14","typeDescriptions":{"typeIdentifier":"t_rational_503_by_1","typeString":"int_const 503"},"value":"503"},"visibility":"internal"},{"constant":true,"id":1652,"mutability":"constant","name":"INVALID_SIGNATURE","nodeType":"VariableDeclaration","scope":1743,"src":"12713:49:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1650,"name":"uint256","nodeType":"ElementaryTypeName","src":"12713:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353034","id":1651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12759:3:14","typeDescriptions":{"typeIdentifier":"t_rational_504_by_1","typeString":"int_const 504"},"value":"504"},"visibility":"internal"},{"constant":true,"id":1655,"mutability":"constant","name":"EXIT_BELOW_MIN","nodeType":"VariableDeclaration","scope":1743,"src":"12768:46:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1653,"name":"uint256","nodeType":"ElementaryTypeName","src":"12768:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353035","id":1654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12811:3:14","typeDescriptions":{"typeIdentifier":"t_rational_505_by_1","typeString":"int_const 505"},"value":"505"},"visibility":"internal"},{"constant":true,"id":1658,"mutability":"constant","name":"JOIN_ABOVE_MAX","nodeType":"VariableDeclaration","scope":1743,"src":"12820:46:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1656,"name":"uint256","nodeType":"ElementaryTypeName","src":"12820:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353036","id":1657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12863:3:14","typeDescriptions":{"typeIdentifier":"t_rational_506_by_1","typeString":"int_const 506"},"value":"506"},"visibility":"internal"},{"constant":true,"id":1661,"mutability":"constant","name":"SWAP_LIMIT","nodeType":"VariableDeclaration","scope":1743,"src":"12872:42:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1659,"name":"uint256","nodeType":"ElementaryTypeName","src":"12872:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353037","id":1660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12911:3:14","typeDescriptions":{"typeIdentifier":"t_rational_507_by_1","typeString":"int_const 507"},"value":"507"},"visibility":"internal"},{"constant":true,"id":1664,"mutability":"constant","name":"SWAP_DEADLINE","nodeType":"VariableDeclaration","scope":1743,"src":"12920:45:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"12920:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353038","id":1663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12962:3:14","typeDescriptions":{"typeIdentifier":"t_rational_508_by_1","typeString":"int_const 508"},"value":"508"},"visibility":"internal"},{"constant":true,"id":1667,"mutability":"constant","name":"CANNOT_SWAP_SAME_TOKEN","nodeType":"VariableDeclaration","scope":1743,"src":"12971:54:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1665,"name":"uint256","nodeType":"ElementaryTypeName","src":"12971:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353039","id":1666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13022:3:14","typeDescriptions":{"typeIdentifier":"t_rational_509_by_1","typeString":"int_const 509"},"value":"509"},"visibility":"internal"},{"constant":true,"id":1670,"mutability":"constant","name":"UNKNOWN_AMOUNT_IN_FIRST_SWAP","nodeType":"VariableDeclaration","scope":1743,"src":"13031:60:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1668,"name":"uint256","nodeType":"ElementaryTypeName","src":"13031:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353130","id":1669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13088:3:14","typeDescriptions":{"typeIdentifier":"t_rational_510_by_1","typeString":"int_const 510"},"value":"510"},"visibility":"internal"},{"constant":true,"id":1673,"mutability":"constant","name":"MALCONSTRUCTED_MULTIHOP_SWAP","nodeType":"VariableDeclaration","scope":1743,"src":"13097:60:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1671,"name":"uint256","nodeType":"ElementaryTypeName","src":"13097:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353131","id":1672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13154:3:14","typeDescriptions":{"typeIdentifier":"t_rational_511_by_1","typeString":"int_const 511"},"value":"511"},"visibility":"internal"},{"constant":true,"id":1676,"mutability":"constant","name":"INTERNAL_BALANCE_OVERFLOW","nodeType":"VariableDeclaration","scope":1743,"src":"13163:57:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"13163:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353132","id":1675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13217:3:14","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"512"},"visibility":"internal"},{"constant":true,"id":1679,"mutability":"constant","name":"INSUFFICIENT_INTERNAL_BALANCE","nodeType":"VariableDeclaration","scope":1743,"src":"13226:61:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1677,"name":"uint256","nodeType":"ElementaryTypeName","src":"13226:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353133","id":1678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13284:3:14","typeDescriptions":{"typeIdentifier":"t_rational_513_by_1","typeString":"int_const 513"},"value":"513"},"visibility":"internal"},{"constant":true,"id":1682,"mutability":"constant","name":"INVALID_ETH_INTERNAL_BALANCE","nodeType":"VariableDeclaration","scope":1743,"src":"13293:60:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1680,"name":"uint256","nodeType":"ElementaryTypeName","src":"13293:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353134","id":1681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13350:3:14","typeDescriptions":{"typeIdentifier":"t_rational_514_by_1","typeString":"int_const 514"},"value":"514"},"visibility":"internal"},{"constant":true,"id":1685,"mutability":"constant","name":"INVALID_POST_LOAN_BALANCE","nodeType":"VariableDeclaration","scope":1743,"src":"13359:57:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1683,"name":"uint256","nodeType":"ElementaryTypeName","src":"13359:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353135","id":1684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13413:3:14","typeDescriptions":{"typeIdentifier":"t_rational_515_by_1","typeString":"int_const 515"},"value":"515"},"visibility":"internal"},{"constant":true,"id":1688,"mutability":"constant","name":"INSUFFICIENT_ETH","nodeType":"VariableDeclaration","scope":1743,"src":"13422:48:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"13422:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353136","id":1687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13467:3:14","typeDescriptions":{"typeIdentifier":"t_rational_516_by_1","typeString":"int_const 516"},"value":"516"},"visibility":"internal"},{"constant":true,"id":1691,"mutability":"constant","name":"UNALLOCATED_ETH","nodeType":"VariableDeclaration","scope":1743,"src":"13476:47:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1689,"name":"uint256","nodeType":"ElementaryTypeName","src":"13476:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353137","id":1690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13520:3:14","typeDescriptions":{"typeIdentifier":"t_rational_517_by_1","typeString":"int_const 517"},"value":"517"},"visibility":"internal"},{"constant":true,"id":1694,"mutability":"constant","name":"ETH_TRANSFER","nodeType":"VariableDeclaration","scope":1743,"src":"13529:44:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1692,"name":"uint256","nodeType":"ElementaryTypeName","src":"13529:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353138","id":1693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13570:3:14","typeDescriptions":{"typeIdentifier":"t_rational_518_by_1","typeString":"int_const 518"},"value":"518"},"visibility":"internal"},{"constant":true,"id":1697,"mutability":"constant","name":"CANNOT_USE_ETH_SENTINEL","nodeType":"VariableDeclaration","scope":1743,"src":"13579:55:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1695,"name":"uint256","nodeType":"ElementaryTypeName","src":"13579:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353139","id":1696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13631:3:14","typeDescriptions":{"typeIdentifier":"t_rational_519_by_1","typeString":"int_const 519"},"value":"519"},"visibility":"internal"},{"constant":true,"id":1700,"mutability":"constant","name":"TOKENS_MISMATCH","nodeType":"VariableDeclaration","scope":1743,"src":"13640:47:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1698,"name":"uint256","nodeType":"ElementaryTypeName","src":"13640:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353230","id":1699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13684:3:14","typeDescriptions":{"typeIdentifier":"t_rational_520_by_1","typeString":"int_const 520"},"value":"520"},"visibility":"internal"},{"constant":true,"id":1703,"mutability":"constant","name":"TOKEN_NOT_REGISTERED","nodeType":"VariableDeclaration","scope":1743,"src":"13693:52:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1701,"name":"uint256","nodeType":"ElementaryTypeName","src":"13693:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353231","id":1702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13742:3:14","typeDescriptions":{"typeIdentifier":"t_rational_521_by_1","typeString":"int_const 521"},"value":"521"},"visibility":"internal"},{"constant":true,"id":1706,"mutability":"constant","name":"TOKEN_ALREADY_REGISTERED","nodeType":"VariableDeclaration","scope":1743,"src":"13751:56:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"13751:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353232","id":1705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13804:3:14","typeDescriptions":{"typeIdentifier":"t_rational_522_by_1","typeString":"int_const 522"},"value":"522"},"visibility":"internal"},{"constant":true,"id":1709,"mutability":"constant","name":"TOKENS_ALREADY_SET","nodeType":"VariableDeclaration","scope":1743,"src":"13813:50:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1707,"name":"uint256","nodeType":"ElementaryTypeName","src":"13813:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353233","id":1708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13860:3:14","typeDescriptions":{"typeIdentifier":"t_rational_523_by_1","typeString":"int_const 523"},"value":"523"},"visibility":"internal"},{"constant":true,"id":1712,"mutability":"constant","name":"TOKENS_LENGTH_MUST_BE_2","nodeType":"VariableDeclaration","scope":1743,"src":"13869:55:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1710,"name":"uint256","nodeType":"ElementaryTypeName","src":"13869:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353234","id":1711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13921:3:14","typeDescriptions":{"typeIdentifier":"t_rational_524_by_1","typeString":"int_const 524"},"value":"524"},"visibility":"internal"},{"constant":true,"id":1715,"mutability":"constant","name":"NONZERO_TOKEN_BALANCE","nodeType":"VariableDeclaration","scope":1743,"src":"13930:53:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1713,"name":"uint256","nodeType":"ElementaryTypeName","src":"13930:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353235","id":1714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13980:3:14","typeDescriptions":{"typeIdentifier":"t_rational_525_by_1","typeString":"int_const 525"},"value":"525"},"visibility":"internal"},{"constant":true,"id":1718,"mutability":"constant","name":"BALANCE_TOTAL_OVERFLOW","nodeType":"VariableDeclaration","scope":1743,"src":"13989:54:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1716,"name":"uint256","nodeType":"ElementaryTypeName","src":"13989:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353236","id":1717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14040:3:14","typeDescriptions":{"typeIdentifier":"t_rational_526_by_1","typeString":"int_const 526"},"value":"526"},"visibility":"internal"},{"constant":true,"id":1721,"mutability":"constant","name":"POOL_NO_TOKENS","nodeType":"VariableDeclaration","scope":1743,"src":"14049:46:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1719,"name":"uint256","nodeType":"ElementaryTypeName","src":"14049:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353237","id":1720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14092:3:14","typeDescriptions":{"typeIdentifier":"t_rational_527_by_1","typeString":"int_const 527"},"value":"527"},"visibility":"internal"},{"constant":true,"id":1724,"mutability":"constant","name":"INSUFFICIENT_FLASH_LOAN_BALANCE","nodeType":"VariableDeclaration","scope":1743,"src":"14101:63:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1722,"name":"uint256","nodeType":"ElementaryTypeName","src":"14101:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353238","id":1723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14161:3:14","typeDescriptions":{"typeIdentifier":"t_rational_528_by_1","typeString":"int_const 528"},"value":"528"},"visibility":"internal"},{"constant":true,"id":1727,"mutability":"constant","name":"SWAP_FEE_PERCENTAGE_TOO_HIGH","nodeType":"VariableDeclaration","scope":1743,"src":"14183:60:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1725,"name":"uint256","nodeType":"ElementaryTypeName","src":"14183:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363030","id":1726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14240:3:14","typeDescriptions":{"typeIdentifier":"t_rational_600_by_1","typeString":"int_const 600"},"value":"600"},"visibility":"internal"},{"constant":true,"id":1730,"mutability":"constant","name":"FLASH_LOAN_FEE_PERCENTAGE_TOO_HIGH","nodeType":"VariableDeclaration","scope":1743,"src":"14249:66:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1728,"name":"uint256","nodeType":"ElementaryTypeName","src":"14249:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363031","id":1729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14312:3:14","typeDescriptions":{"typeIdentifier":"t_rational_601_by_1","typeString":"int_const 601"},"value":"601"},"visibility":"internal"},{"constant":true,"id":1733,"mutability":"constant","name":"INSUFFICIENT_FLASH_LOAN_FEE_AMOUNT","nodeType":"VariableDeclaration","scope":1743,"src":"14321:66:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1731,"name":"uint256","nodeType":"ElementaryTypeName","src":"14321:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363032","id":1732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14384:3:14","typeDescriptions":{"typeIdentifier":"t_rational_602_by_1","typeString":"int_const 602"},"value":"602"},"visibility":"internal"},{"constant":true,"id":1736,"mutability":"constant","name":"AUM_FEE_PERCENTAGE_TOO_HIGH","nodeType":"VariableDeclaration","scope":1743,"src":"14393:59:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1734,"name":"uint256","nodeType":"ElementaryTypeName","src":"14393:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363033","id":1735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14449:3:14","typeDescriptions":{"typeIdentifier":"t_rational_603_by_1","typeString":"int_const 603"},"value":"603"},"visibility":"internal"},{"constant":true,"id":1739,"mutability":"constant","name":"UNIMPLEMENTED","nodeType":"VariableDeclaration","scope":1743,"src":"14471:45:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1737,"name":"uint256","nodeType":"ElementaryTypeName","src":"14471:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"393938","id":1738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14513:3:14","typeDescriptions":{"typeIdentifier":"t_rational_998_by_1","typeString":"int_const 998"},"value":"998"},"visibility":"internal"},{"constant":true,"id":1742,"mutability":"constant","name":"SHOULD_NOT_HAPPEN","nodeType":"VariableDeclaration","scope":1743,"src":"14522:49:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1740,"name":"uint256","nodeType":"ElementaryTypeName","src":"14522:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"393939","id":1741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14568:3:14","typeDescriptions":{"typeIdentifier":"t_rational_999_by_1","typeString":"int_const 999"},"value":"999"},"visibility":"internal"}],"scope":1744,"src":"5050:9524:14"}],"src":"688:13887:14"},"id":14},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","exportedSymbols":{"IAuthentication":[1754]},"id":1755,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1745,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:15"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1754,"linearizedBaseContracts":[1754],"name":"IAuthentication","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"745:116:15","text":" @dev Returns the action identifier associated with the external function described by `selector`."},"functionSelector":"851c1bb3","id":1753,"implemented":false,"kind":"function","modifiers":[],"name":"getActionId","nodeType":"FunctionDefinition","parameters":{"id":1749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1748,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":1753,"src":"887:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1747,"name":"bytes4","nodeType":"ElementaryTypeName","src":"887:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"886:17:15"},"returnParameters":{"id":1752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1751,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1753,"src":"927:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1750,"name":"bytes32","nodeType":"ElementaryTypeName","src":"927:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"926:9:15"},"scope":1754,"src":"866:70:15","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1755,"src":"713:225:15"}],"src":"688:251:15"},"id":15},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","exportedSymbols":{"ISignaturesValidator":[1772]},"id":1773,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1756,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:16"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1757,"nodeType":"StructuredDocumentation","src":"713:95:16","text":" @dev Interface for the SignatureValidator helper, used to support meta-transactions."},"fullyImplemented":false,"id":1772,"linearizedBaseContracts":[1772],"name":"ISignaturesValidator","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1758,"nodeType":"StructuredDocumentation","src":"846:60:16","text":" @dev Returns the EIP712 domain separator."},"functionSelector":"ed24911d","id":1763,"implemented":false,"kind":"function","modifiers":[],"name":"getDomainSeparator","nodeType":"FunctionDefinition","parameters":{"id":1759,"nodeType":"ParameterList","parameters":[],"src":"938:2:16"},"returnParameters":{"id":1762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1761,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1763,"src":"964:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1760,"name":"bytes32","nodeType":"ElementaryTypeName","src":"964:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"963:9:16"},"scope":1772,"src":"911:62:16","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1764,"nodeType":"StructuredDocumentation","src":"979:83:16","text":" @dev Returns the next nonce used by an address to sign messages."},"functionSelector":"90193b7c","id":1771,"implemented":false,"kind":"function","modifiers":[],"name":"getNextNonce","nodeType":"FunctionDefinition","parameters":{"id":1767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1766,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1771,"src":"1089:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1765,"name":"address","nodeType":"ElementaryTypeName","src":"1089:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1088:14:16"},"returnParameters":{"id":1770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1769,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1771,"src":"1126:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1768,"name":"uint256","nodeType":"ElementaryTypeName","src":"1126:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1125:9:16"},"scope":1772,"src":"1067:68:16","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1773,"src":"809:328:16"}],"src":"688:450:16"},"id":16},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol","exportedSymbols":{"ITemporarilyPausable":[1791]},"id":1792,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1774,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:17"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1775,"nodeType":"StructuredDocumentation","src":"713:61:17","text":" @dev Interface for the TemporarilyPausable helper."},"fullyImplemented":false,"id":1791,"linearizedBaseContracts":[1791],"name":"ITemporarilyPausable","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1776,"nodeType":"StructuredDocumentation","src":"812:83:17","text":" @dev Emitted every time the pause state changes by `_setPaused`."},"id":1780,"name":"PausedStateChanged","nodeType":"EventDefinition","parameters":{"id":1779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1778,"indexed":false,"mutability":"mutable","name":"paused","nodeType":"VariableDeclaration","scope":1780,"src":"925:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1777,"name":"bool","nodeType":"ElementaryTypeName","src":"925:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"924:13:17"},"src":"900:38:17"},{"documentation":{"id":1781,"nodeType":"StructuredDocumentation","src":"944:57:17","text":" @dev Returns the current paused state."},"functionSelector":"1c0de051","id":1790,"implemented":false,"kind":"function","modifiers":[],"name":"getPausedState","nodeType":"FunctionDefinition","parameters":{"id":1782,"nodeType":"ParameterList","parameters":[],"src":"1029:2:17"},"returnParameters":{"id":1789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1784,"mutability":"mutable","name":"paused","nodeType":"VariableDeclaration","scope":1790,"src":"1092:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1783,"name":"bool","nodeType":"ElementaryTypeName","src":"1092:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1786,"mutability":"mutable","name":"pauseWindowEndTime","nodeType":"VariableDeclaration","scope":1790,"src":"1117:26:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"1117:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1788,"mutability":"mutable","name":"bufferPeriodEndTime","nodeType":"VariableDeclaration","scope":1790,"src":"1157:27:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1787,"name":"uint256","nodeType":"ElementaryTypeName","src":"1157:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1078:116:17"},"scope":1791,"src":"1006:189:17","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1792,"src":"775:422:17"}],"src":"688:510:17"},"id":17},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol","exportedSymbols":{"IERC4626":[1871]},"id":1872,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1793,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:18"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../openzeppelin/IERC20.sol","id":1794,"nodeType":"ImportDirective","scope":1872,"sourceUnit":1965,"src":"713:36:18","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1795,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"773:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":1796,"nodeType":"InheritanceSpecifier","src":"773:6:18"}],"contractDependencies":[1964],"contractKind":"interface","fullyImplemented":false,"id":1871,"linearizedBaseContracts":[1871,1964],"name":"IERC4626","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1797,"nodeType":"StructuredDocumentation","src":"786:112:18","text":" @dev `caller` has exchanged `assets` for `shares`, and transferred those `shares` to `owner`."},"id":1807,"name":"Deposit","nodeType":"EventDefinition","parameters":{"id":1806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1799,"indexed":true,"mutability":"mutable","name":"caller","nodeType":"VariableDeclaration","scope":1807,"src":"917:22:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1798,"name":"address","nodeType":"ElementaryTypeName","src":"917:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1801,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1807,"src":"941:21:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1800,"name":"address","nodeType":"ElementaryTypeName","src":"941:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1803,"indexed":false,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":1807,"src":"964:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1802,"name":"uint256","nodeType":"ElementaryTypeName","src":"964:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1805,"indexed":false,"mutability":"mutable","name":"shares","nodeType":"VariableDeclaration","scope":1807,"src":"980:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1804,"name":"uint256","nodeType":"ElementaryTypeName","src":"980:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"916:79:18"},"src":"903:93:18"},{"anonymous":false,"documentation":{"id":1808,"nodeType":"StructuredDocumentation","src":"1002:146:18","text":" @dev `caller` has exchanged `shares`, owned by `owner`, for `assets`,\n and transferred those `assets` to `receiver`."},"id":1820,"name":"Withdraw","nodeType":"EventDefinition","parameters":{"id":1819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1810,"indexed":true,"mutability":"mutable","name":"caller","nodeType":"VariableDeclaration","scope":1820,"src":"1177:22:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1809,"name":"address","nodeType":"ElementaryTypeName","src":"1177:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1812,"indexed":true,"mutability":"mutable","name":"receiver","nodeType":"VariableDeclaration","scope":1820,"src":"1209:24:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1811,"name":"address","nodeType":"ElementaryTypeName","src":"1209:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1814,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1820,"src":"1243:21:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1813,"name":"address","nodeType":"ElementaryTypeName","src":"1243:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1816,"indexed":false,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":1820,"src":"1274:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1815,"name":"uint256","nodeType":"ElementaryTypeName","src":"1274:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1818,"indexed":false,"mutability":"mutable","name":"shares","nodeType":"VariableDeclaration","scope":1820,"src":"1298:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1817,"name":"uint256","nodeType":"ElementaryTypeName","src":"1298:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1167:151:18"},"src":"1153:166:18"},{"documentation":{"id":1821,"nodeType":"StructuredDocumentation","src":"1325:118:18","text":" @dev Mints `shares` Vault shares to `receiver` by depositing exactly `amount` of underlying tokens."},"functionSelector":"6e553f65","id":1830,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":1826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":1830,"src":"1465:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1822,"name":"uint256","nodeType":"ElementaryTypeName","src":"1465:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1825,"mutability":"mutable","name":"receiver","nodeType":"VariableDeclaration","scope":1830,"src":"1481:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1824,"name":"address","nodeType":"ElementaryTypeName","src":"1481:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1464:34:18"},"returnParameters":{"id":1829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1828,"mutability":"mutable","name":"shares","nodeType":"VariableDeclaration","scope":1830,"src":"1517:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1827,"name":"uint256","nodeType":"ElementaryTypeName","src":"1517:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1516:16:18"},"scope":1871,"src":"1448:85:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1831,"nodeType":"StructuredDocumentation","src":"1539:114:18","text":" @dev Burns exactly `shares` from `owner` and sends `assets` of underlying tokens to `receiver`."},"functionSelector":"ba087652","id":1842,"implemented":false,"kind":"function","modifiers":[],"name":"redeem","nodeType":"FunctionDefinition","parameters":{"id":1838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1833,"mutability":"mutable","name":"shares","nodeType":"VariableDeclaration","scope":1842,"src":"1683:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1832,"name":"uint256","nodeType":"ElementaryTypeName","src":"1683:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1835,"mutability":"mutable","name":"receiver","nodeType":"VariableDeclaration","scope":1842,"src":"1707:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1834,"name":"address","nodeType":"ElementaryTypeName","src":"1707:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1837,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1842,"src":"1733:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1836,"name":"address","nodeType":"ElementaryTypeName","src":"1733:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1673:79:18"},"returnParameters":{"id":1841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1840,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":1842,"src":"1771:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1839,"name":"uint256","nodeType":"ElementaryTypeName","src":"1771:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1770:16:18"},"scope":1871,"src":"1658:129:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1843,"nodeType":"StructuredDocumentation","src":"1793:124:18","text":" @dev The address of the underlying token that the Vault uses for accounting, depositing, and withdrawing."},"functionSelector":"38d52e0f","id":1848,"implemented":false,"kind":"function","modifiers":[],"name":"asset","nodeType":"FunctionDefinition","parameters":{"id":1844,"nodeType":"ParameterList","parameters":[],"src":"1936:2:18"},"returnParameters":{"id":1847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1846,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1848,"src":"1962:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1845,"name":"address","nodeType":"ElementaryTypeName","src":"1962:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1961:9:18"},"scope":1871,"src":"1922:49:18","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1849,"nodeType":"StructuredDocumentation","src":"1977:92:18","text":" @dev Total amount of the underlying asset that is “managed” by Vault."},"functionSelector":"01e1d114","id":1854,"implemented":false,"kind":"function","modifiers":[],"name":"totalAssets","nodeType":"FunctionDefinition","parameters":{"id":1850,"nodeType":"ParameterList","parameters":[],"src":"2094:2:18"},"returnParameters":{"id":1853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1852,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1854,"src":"2120:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1851,"name":"uint256","nodeType":"ElementaryTypeName","src":"2120:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2119:9:18"},"scope":1871,"src":"2074:55:18","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1855,"nodeType":"StructuredDocumentation","src":"2135:180:18","text":" @dev The amount of `assets` that the Vault would exchange for the amount\n of `shares` provided, in an ideal scenario where all the conditions are met."},"functionSelector":"07a2d13a","id":1862,"implemented":false,"kind":"function","modifiers":[],"name":"convertToAssets","nodeType":"FunctionDefinition","parameters":{"id":1858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1857,"mutability":"mutable","name":"shares","nodeType":"VariableDeclaration","scope":1862,"src":"2345:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1856,"name":"uint256","nodeType":"ElementaryTypeName","src":"2345:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2344:16:18"},"returnParameters":{"id":1861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1860,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":1862,"src":"2384:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1859,"name":"uint256","nodeType":"ElementaryTypeName","src":"2384:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2383:16:18"},"scope":1871,"src":"2320:80:18","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1863,"nodeType":"StructuredDocumentation","src":"2406:180:18","text":" @dev The amount of `shares` that the Vault would exchange for the amount\n of `assets` provided, in an ideal scenario where all the conditions are met."},"functionSelector":"c6e6f592","id":1870,"implemented":false,"kind":"function","modifiers":[],"name":"convertToShares","nodeType":"FunctionDefinition","parameters":{"id":1866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1865,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":1870,"src":"2616:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1864,"name":"uint256","nodeType":"ElementaryTypeName","src":"2616:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2615:16:18"},"returnParameters":{"id":1869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1868,"mutability":"mutable","name":"shares","nodeType":"VariableDeclaration","scope":1870,"src":"2655:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1867,"name":"uint256","nodeType":"ElementaryTypeName","src":"2655:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2654:16:18"},"scope":1871,"src":"2591:80:18","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1872,"src":"751:1922:18"}],"src":"688:1986:18"},"id":18},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","exportedSymbols":{"IWETH":[1886]},"id":1887,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1873,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:19"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../openzeppelin/IERC20.sol","id":1874,"nodeType":"ImportDirective","scope":1887,"sourceUnit":1965,"src":"713:36:19","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1876,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"921:6:19","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":1877,"nodeType":"InheritanceSpecifier","src":"921:6:19"}],"contractDependencies":[1964],"contractKind":"interface","documentation":{"id":1875,"nodeType":"StructuredDocumentation","src":"751:150:19","text":" @dev Interface for WETH9.\n See https://github.com/gnosis/canonical-weth/blob/0dd1ea3e295eef916d0c6223ec63141137d22d67/contracts/WETH9.sol"},"fullyImplemented":false,"id":1886,"linearizedBaseContracts":[1886,1964],"name":"IWETH","nodeType":"ContractDefinition","nodes":[{"functionSelector":"d0e30db0","id":1880,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":1878,"nodeType":"ParameterList","parameters":[],"src":"950:2:19"},"returnParameters":{"id":1879,"nodeType":"ParameterList","parameters":[],"src":"969:0:19"},"scope":1886,"src":"934:36:19","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"2e1a7d4d","id":1885,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":1883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1882,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1885,"src":"994:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1881,"name":"uint256","nodeType":"ElementaryTypeName","src":"994:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"993:16:19"},"returnParameters":{"id":1884,"nodeType":"ParameterList","parameters":[],"src":"1018:0:19"},"scope":1886,"src":"976:43:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1887,"src":"902:119:19"}],"src":"688:334:19"},"id":19},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","exportedSymbols":{"IERC20":[1964]},"id":1965,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1888,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:20"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1889,"nodeType":"StructuredDocumentation","src":"58:70:20","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":1964,"linearizedBaseContracts":[1964],"name":"IERC20","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1890,"nodeType":"StructuredDocumentation","src":"152:66:20","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":1895,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":1891,"nodeType":"ParameterList","parameters":[],"src":"243:2:20"},"returnParameters":{"id":1894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1893,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1895,"src":"269:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1892,"name":"uint256","nodeType":"ElementaryTypeName","src":"269:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"268:9:20"},"scope":1964,"src":"223:55:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"284:72:20","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":1903,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":1899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1898,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":1903,"src":"380:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1897,"name":"address","nodeType":"ElementaryTypeName","src":"380:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"379:17:20"},"returnParameters":{"id":1902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1901,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1903,"src":"420:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1900,"name":"uint256","nodeType":"ElementaryTypeName","src":"420:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"419:9:20"},"scope":1964,"src":"361:68:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1904,"nodeType":"StructuredDocumentation","src":"435:209:20","text":" @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":1913,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":1909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1906,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":1913,"src":"667:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1905,"name":"address","nodeType":"ElementaryTypeName","src":"667:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1908,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1913,"src":"686:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1907,"name":"uint256","nodeType":"ElementaryTypeName","src":"686:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"666:35:20"},"returnParameters":{"id":1912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1911,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1913,"src":"720:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1910,"name":"bool","nodeType":"ElementaryTypeName","src":"720:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"719:6:20"},"scope":1964,"src":"649:77:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1914,"nodeType":"StructuredDocumentation","src":"732:264:20","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":1923,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":1919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1916,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1923,"src":"1020:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1915,"name":"address","nodeType":"ElementaryTypeName","src":"1020:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1918,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":1923,"src":"1035:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1917,"name":"address","nodeType":"ElementaryTypeName","src":"1035:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1019:32:20"},"returnParameters":{"id":1922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1921,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1923,"src":"1075:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1920,"name":"uint256","nodeType":"ElementaryTypeName","src":"1075:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1074:9:20"},"scope":1964,"src":"1001:83:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1924,"nodeType":"StructuredDocumentation","src":"1090:642:20","text":" @dev Sets `amount` as the allowance of `spender` over the 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":1933,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":1929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1926,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":1933,"src":"1754:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1925,"name":"address","nodeType":"ElementaryTypeName","src":"1754:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1928,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1933,"src":"1771:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1927,"name":"uint256","nodeType":"ElementaryTypeName","src":"1771:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1753:33:20"},"returnParameters":{"id":1932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1931,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1933,"src":"1805:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1930,"name":"bool","nodeType":"ElementaryTypeName","src":"1805:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1804:6:20"},"scope":1964,"src":"1737:74:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1934,"nodeType":"StructuredDocumentation","src":"1817:296:20","text":" @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` 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":1945,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":1941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1936,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":1945,"src":"2149:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1935,"name":"address","nodeType":"ElementaryTypeName","src":"2149:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1938,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":1945,"src":"2173:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1937,"name":"address","nodeType":"ElementaryTypeName","src":"2173:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1940,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":1945,"src":"2200:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1939,"name":"uint256","nodeType":"ElementaryTypeName","src":"2200:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2139:81:20"},"returnParameters":{"id":1944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1943,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1945,"src":"2239:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1942,"name":"bool","nodeType":"ElementaryTypeName","src":"2239:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2238:6:20"},"scope":1964,"src":"2118:127:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":1946,"nodeType":"StructuredDocumentation","src":"2251:158:20","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"id":1954,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":1953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1948,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":1954,"src":"2429:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1947,"name":"address","nodeType":"ElementaryTypeName","src":"2429:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1950,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":1954,"src":"2451:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1949,"name":"address","nodeType":"ElementaryTypeName","src":"2451:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1952,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":1954,"src":"2471:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1951,"name":"uint256","nodeType":"ElementaryTypeName","src":"2471:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2428:57:20"},"src":"2414:72:20"},{"anonymous":false,"documentation":{"id":1955,"nodeType":"StructuredDocumentation","src":"2492:148:20","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."},"id":1963,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":1962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1957,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1963,"src":"2660:21:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1956,"name":"address","nodeType":"ElementaryTypeName","src":"2660:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1959,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":1963,"src":"2683:23:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1958,"name":"address","nodeType":"ElementaryTypeName","src":"2683:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1961,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":1963,"src":"2708:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1960,"name":"uint256","nodeType":"ElementaryTypeName","src":"2708:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2659:63:20"},"src":"2645:78:20"}],"scope":1965,"src":"129:2596:20"}],"src":"33:2693:20"},"id":20},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","exportedSymbols":{"IERC20Permit":[2000]},"id":2001,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1966,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:21"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1967,"nodeType":"StructuredDocumentation","src":"58:482:21","text":" @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all."},"fullyImplemented":false,"id":2000,"linearizedBaseContracts":[2000],"name":"IERC20Permit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1968,"nodeType":"StructuredDocumentation","src":"570:788:21","text":" @dev Sets `value` as the allowance of `spender` over `owner`'s tokens,\n given `owner`'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section]."},"functionSelector":"d505accf","id":1985,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":1983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1970,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1985,"src":"1388:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1969,"name":"address","nodeType":"ElementaryTypeName","src":"1388:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1972,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":1985,"src":"1411:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1971,"name":"address","nodeType":"ElementaryTypeName","src":"1411:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1974,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":1985,"src":"1436:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1973,"name":"uint256","nodeType":"ElementaryTypeName","src":"1436:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1976,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":1985,"src":"1459:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1975,"name":"uint256","nodeType":"ElementaryTypeName","src":"1459:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1978,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":1985,"src":"1485:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1977,"name":"uint8","nodeType":"ElementaryTypeName","src":"1485:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1980,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":1985,"src":"1502:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1979,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1502:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1982,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":1985,"src":"1521:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1981,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1521:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1378:158:21"},"returnParameters":{"id":1984,"nodeType":"ParameterList","parameters":[],"src":"1545:0:21"},"scope":2000,"src":"1363:183:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1986,"nodeType":"StructuredDocumentation","src":"1552:294:21","text":" @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."},"functionSelector":"7ecebe00","id":1993,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","parameters":{"id":1989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1988,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1993,"src":"1867:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1987,"name":"address","nodeType":"ElementaryTypeName","src":"1867:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1866:15:21"},"returnParameters":{"id":1992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1991,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1993,"src":"1905:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1990,"name":"uint256","nodeType":"ElementaryTypeName","src":"1905:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1904:9:21"},"scope":2000,"src":"1851:63:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1994,"nodeType":"StructuredDocumentation","src":"1920:128:21","text":" @dev Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}."},"functionSelector":"3644e515","id":1999,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","parameters":{"id":1995,"nodeType":"ParameterList","parameters":[],"src":"2131:2:21"},"returnParameters":{"id":1998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1997,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1999,"src":"2157:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1996,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2157:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2156:9:21"},"scope":2000,"src":"2106:60:21","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2001,"src":"541:1627:21"}],"src":"33:2136:21"},"id":21},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol","exportedSymbols":{"IERC20PermitDAI":[2023]},"id":2024,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2002,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:22"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2023,"linearizedBaseContracts":[2023],"name":"IERC20PermitDAI","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2003,"nodeType":"StructuredDocumentation","src":"90:485:22","text":" @notice update allowance with a signed permit\n @param holder Token owner's address (Authorizer)\n @param spender Spender's address\n @param nonce The permit nonce\n @param expiry The time at which this expires (unix time)\n @param allowed Whether the spender is allowed or disallowed from spending\n @param v v of the signature\n @param r r of the signature\n @param s s of the signature"},"functionSelector":"8fcbaf0c","id":2022,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":2020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2005,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":2022,"src":"605:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2004,"name":"address","nodeType":"ElementaryTypeName","src":"605:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2007,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2022,"src":"629:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2006,"name":"address","nodeType":"ElementaryTypeName","src":"629:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2009,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":2022,"src":"654:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2008,"name":"uint256","nodeType":"ElementaryTypeName","src":"654:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2011,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":2022,"src":"677:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2010,"name":"uint256","nodeType":"ElementaryTypeName","src":"677:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2013,"mutability":"mutable","name":"allowed","nodeType":"VariableDeclaration","scope":2022,"src":"701:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2012,"name":"bool","nodeType":"ElementaryTypeName","src":"701:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2015,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":2022,"src":"723:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2014,"name":"uint8","nodeType":"ElementaryTypeName","src":"723:5:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2017,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":2022,"src":"740:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2016,"name":"bytes32","nodeType":"ElementaryTypeName","src":"740:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2019,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":2022,"src":"759:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2018,"name":"bytes32","nodeType":"ElementaryTypeName","src":"759:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"595:179:22"},"returnParameters":{"id":2021,"nodeType":"ParameterList","parameters":[],"src":"783:0:22"},"scope":2023,"src":"580:204:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2024,"src":"58:728:22"}],"src":"33:754:22"},"id":22},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol","exportedSymbols":{"IBALTokenHolder":[2051]},"id":2052,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2025,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:23"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":2026,"nodeType":"ImportDirective","scope":2052,"sourceUnit":1755,"src":"713:55:23","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2027,"nodeType":"ImportDirective","scope":2052,"sourceUnit":1965,"src":"769:51:23","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2028,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":1754,"src":"851:15:23","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$1754","typeString":"contract IAuthentication"}},"id":2029,"nodeType":"InheritanceSpecifier","src":"851:15:23"}],"contractDependencies":[1754],"contractKind":"interface","fullyImplemented":false,"id":2051,"linearizedBaseContracts":[2051,1754],"name":"IBALTokenHolder","nodeType":"ContractDefinition","nodes":[{"functionSelector":"17d7de7c","id":2034,"implemented":false,"kind":"function","modifiers":[],"name":"getName","nodeType":"FunctionDefinition","parameters":{"id":2030,"nodeType":"ParameterList","parameters":[],"src":"889:2:23"},"returnParameters":{"id":2033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2032,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2034,"src":"915:13:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2031,"name":"string","nodeType":"ElementaryTypeName","src":"915:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"914:15:23"},"scope":2051,"src":"873:57:23","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c1075329","id":2041,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawFunds","nodeType":"FunctionDefinition","parameters":{"id":2039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2036,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2041,"src":"959:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2035,"name":"address","nodeType":"ElementaryTypeName","src":"959:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2038,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2041,"src":"978:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2037,"name":"uint256","nodeType":"ElementaryTypeName","src":"978:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"958:35:23"},"returnParameters":{"id":2040,"nodeType":"ParameterList","parameters":[],"src":"1002:0:23"},"scope":2051,"src":"936:67:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8b6ca32c","id":2050,"implemented":false,"kind":"function","modifiers":[],"name":"sweepTokens","nodeType":"FunctionDefinition","parameters":{"id":2048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2043,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2050,"src":"1039:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":2042,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1039:6:23","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2045,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2050,"src":"1061:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2044,"name":"address","nodeType":"ElementaryTypeName","src":"1061:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2047,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2050,"src":"1088:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2046,"name":"uint256","nodeType":"ElementaryTypeName","src":"1088:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1029:79:23"},"returnParameters":{"id":2049,"nodeType":"ParameterList","parameters":[],"src":"1117:0:23"},"scope":2051,"src":"1009:109:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2052,"src":"822:298:23"}],"src":"688:433:23"},"id":23},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol","exportedSymbols":{"IBALTokenHolderFactory":[2081]},"id":2082,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2053,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:24"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"../vault/IVault.sol","id":2054,"nodeType":"ImportDirective","scope":2082,"sourceUnit":3372,"src":"713:29:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","file":"../liquidity-mining/IBalancerToken.sol","id":2055,"nodeType":"ImportDirective","scope":2082,"sourceUnit":253,"src":"743:48:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol","file":"./IBALTokenHolder.sol","id":2056,"nodeType":"ImportDirective","scope":2082,"sourceUnit":2052,"src":"793:31:24","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2081,"linearizedBaseContracts":[2081],"name":"IBALTokenHolderFactory","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c0039699","id":2061,"implemented":false,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","parameters":{"id":2057,"nodeType":"ParameterList","parameters":[],"src":"890:2:24"},"returnParameters":{"id":2060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2059,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2061,"src":"916:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"},"typeName":{"id":2058,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":252,"src":"916:14:24","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"915:16:24"},"scope":2081,"src":"865:67:24","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8d928af8","id":2066,"implemented":false,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":2062,"nodeType":"ParameterList","parameters":[],"src":"955:2:24"},"returnParameters":{"id":2065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2066,"src":"981:6:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":2063,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"981:6:24","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"}],"src":"980:8:24"},"scope":2081,"src":"938:51:24","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"36390717","id":2073,"implemented":false,"kind":"function","modifiers":[],"name":"isHolderFromFactory","nodeType":"FunctionDefinition","parameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2068,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":2073,"src":"1024:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2067,"name":"address","nodeType":"ElementaryTypeName","src":"1024:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1023:16:24"},"returnParameters":{"id":2072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2071,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2073,"src":"1063:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2070,"name":"bool","nodeType":"ElementaryTypeName","src":"1063:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1062:6:24"},"scope":2081,"src":"995:74:24","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b6a46b3b","id":2080,"implemented":false,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":2076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2075,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":2080,"src":"1091:18:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2074,"name":"string","nodeType":"ElementaryTypeName","src":"1091:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1090:20:24"},"returnParameters":{"id":2079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2078,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2080,"src":"1129:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBALTokenHolder_$2051","typeString":"contract IBALTokenHolder"},"typeName":{"id":2077,"name":"IBALTokenHolder","nodeType":"UserDefinedTypeName","referencedDeclaration":2051,"src":"1129:15:24","typeDescriptions":{"typeIdentifier":"t_contract$_IBALTokenHolder_$2051","typeString":"contract IBALTokenHolder"}},"visibility":"internal"}],"src":"1128:17:24"},"scope":2081,"src":"1075:71:24","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2082,"src":"826:322:24"}],"src":"688:461:24"},"id":24},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol","exportedSymbols":{"IBalancerQueries":[2144]},"id":2145,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2083,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:25"},{"id":2084,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:25"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"../vault/IVault.sol","id":2085,"nodeType":"ImportDirective","scope":2145,"sourceUnit":3372,"src":"747:29:25","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2086,"nodeType":"StructuredDocumentation","src":"778:945:25","text":" @dev Provides a way to perform queries on swaps, joins and exits, simulating these operations and returning the exact\n result they would have if called on the Vault given the current state. Note that the results will be affected by\n other transactions interacting with the Pools involved.\n All query functions can be called both on-chain and off-chain.\n If calling them from a contract, note that all query functions are not `view`. Despite this, these functions produce\n no net state change, and for all intents and purposes can be thought of as if they were indeed `view`. However,\n calling them via STATICCALL will fail.\n If calling them from an off-chain client, make sure to use eth_call: most clients default to eth_sendTransaction for\n non-view functions.\n In all cases, the `fromInternalBalance` and `toInternalBalance` fields are entirely ignored: we just use the same\n structs for simplicity."},"fullyImplemented":false,"id":2144,"linearizedBaseContracts":[2144],"name":"IBalancerQueries","nodeType":"ContractDefinition","nodes":[{"functionSelector":"e969f6b3","id":2095,"implemented":false,"kind":"function","modifiers":[],"name":"querySwap","nodeType":"FunctionDefinition","parameters":{"id":2091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2088,"mutability":"mutable","name":"singleSwap","nodeType":"VariableDeclaration","scope":2095,"src":"1776:35:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3222_memory_ptr","typeString":"struct IVault.SingleSwap"},"typeName":{"id":2087,"name":"IVault.SingleSwap","nodeType":"UserDefinedTypeName","referencedDeclaration":3222,"src":"1776:17:25","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3222_storage_ptr","typeString":"struct IVault.SingleSwap"}},"visibility":"internal"},{"constant":false,"id":2090,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":2095,"src":"1813:34:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":2089,"name":"IVault.FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3277,"src":"1813:21:25","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"}],"src":"1775:73:25"},"returnParameters":{"id":2094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2093,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2095,"src":"1883:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2092,"name":"uint256","nodeType":"ElementaryTypeName","src":"1883:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1882:9:25"},"scope":2144,"src":"1757:135:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f84d066e","id":2111,"implemented":false,"kind":"function","modifiers":[],"name":"queryBatchSwap","nodeType":"FunctionDefinition","parameters":{"id":2106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2097,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":2111,"src":"1931:20:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"},"typeName":{"id":2096,"name":"IVault.SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3195,"src":"1931:15:25","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":2100,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":2111,"src":"1961:35:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":2098,"name":"IVault.BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3255,"src":"1961:20:25","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3255_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":2099,"nodeType":"ArrayTypeName","src":"1961:22:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"},{"constant":false,"id":2103,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":2111,"src":"2006:22:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":2101,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"2006:6:25","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"id":2102,"nodeType":"ArrayTypeName","src":"2006:8:25","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":2105,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":2111,"src":"2038:34:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":2104,"name":"IVault.FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3277,"src":"2038:21:25","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"}],"src":"1921:157:25"},"returnParameters":{"id":2110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2109,"mutability":"mutable","name":"assetDeltas","nodeType":"VariableDeclaration","scope":2111,"src":"2097:27:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":2107,"name":"int256","nodeType":"ElementaryTypeName","src":"2097:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2108,"nodeType":"ArrayTypeName","src":"2097:8:25","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"src":"2096:29:25"},"scope":2144,"src":"1898:228:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"9ebbf05d","id":2127,"implemented":false,"kind":"function","modifiers":[],"name":"queryJoin","nodeType":"FunctionDefinition","parameters":{"id":2120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2113,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2127,"src":"2160:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2112,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2160:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2115,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2127,"src":"2184:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2114,"name":"address","nodeType":"ElementaryTypeName","src":"2184:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2117,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2127,"src":"2208:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2116,"name":"address","nodeType":"ElementaryTypeName","src":"2208:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2119,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":2127,"src":"2235:37:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3150_memory_ptr","typeString":"struct IVault.JoinPoolRequest"},"typeName":{"id":2118,"name":"IVault.JoinPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3150,"src":"2235:22:25","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3150_storage_ptr","typeString":"struct IVault.JoinPoolRequest"}},"visibility":"internal"}],"src":"2150:128:25"},"returnParameters":{"id":2126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2122,"mutability":"mutable","name":"bptOut","nodeType":"VariableDeclaration","scope":2127,"src":"2297:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2121,"name":"uint256","nodeType":"ElementaryTypeName","src":"2297:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2125,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":2127,"src":"2313:26:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2123,"name":"uint256","nodeType":"ElementaryTypeName","src":"2313:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2124,"nodeType":"ArrayTypeName","src":"2313:9:25","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2296:44:25"},"scope":2144,"src":"2132:209:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c7b2c52c","id":2143,"implemented":false,"kind":"function","modifiers":[],"name":"queryExit","nodeType":"FunctionDefinition","parameters":{"id":2136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2129,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2143,"src":"2375:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2128,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2375:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2131,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2143,"src":"2399:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2130,"name":"address","nodeType":"ElementaryTypeName","src":"2399:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2133,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2143,"src":"2423:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2132,"name":"address","nodeType":"ElementaryTypeName","src":"2423:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2135,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":2143,"src":"2450:37:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":2134,"name":"IVault.ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3173,"src":"2450:22:25","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"}],"src":"2365:128:25"},"returnParameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2138,"mutability":"mutable","name":"bptIn","nodeType":"VariableDeclaration","scope":2143,"src":"2512:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"2512:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2141,"mutability":"mutable","name":"amountsOut","nodeType":"VariableDeclaration","scope":2143,"src":"2527:27:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2139,"name":"uint256","nodeType":"ElementaryTypeName","src":"2527:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2140,"nodeType":"ArrayTypeName","src":"2527:9:25","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2511:44:25"},"scope":2144,"src":"2347:209:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2145,"src":"1724:834:25"}],"src":"688:1871:25"},"id":25},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol","exportedSymbols":{"IBalancerRelayer":[2169]},"id":2170,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2146,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:26"},{"id":2147,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:26"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"../vault/IVault.sol","id":2148,"nodeType":"ImportDirective","scope":2170,"sourceUnit":3372,"src":"747:29:26","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2149,"nodeType":"StructuredDocumentation","src":"778:102:26","text":" @title IBalancerRelayer\n @notice Allows safe multicall execution of a relayer's functions"},"fullyImplemented":false,"id":2169,"linearizedBaseContracts":[2169],"name":"IBalancerRelayer","nodeType":"ContractDefinition","nodes":[{"functionSelector":"7678922e","id":2154,"implemented":false,"kind":"function","modifiers":[],"name":"getLibrary","nodeType":"FunctionDefinition","parameters":{"id":2150,"nodeType":"ParameterList","parameters":[],"src":"933:2:26"},"returnParameters":{"id":2153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2152,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2154,"src":"959:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2151,"name":"address","nodeType":"ElementaryTypeName","src":"959:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"958:9:26"},"scope":2169,"src":"914:54:26","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8d928af8","id":2159,"implemented":false,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":2155,"nodeType":"ParameterList","parameters":[],"src":"991:2:26"},"returnParameters":{"id":2158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2157,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2159,"src":"1017:6:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":2156,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"1017:6:26","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1016:8:26"},"scope":2169,"src":"974:51:26","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"ac9650d8","id":2168,"implemented":false,"kind":"function","modifiers":[],"name":"multicall","nodeType":"FunctionDefinition","parameters":{"id":2163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2162,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":2168,"src":"1050:21:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2160,"name":"bytes","nodeType":"ElementaryTypeName","src":"1050:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2161,"nodeType":"ArrayTypeName","src":"1050:7:26","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"1049:23:26"},"returnParameters":{"id":2167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2166,"mutability":"mutable","name":"results","nodeType":"VariableDeclaration","scope":2168,"src":"1099:22:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2164,"name":"bytes","nodeType":"ElementaryTypeName","src":"1099:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2165,"nodeType":"ArrayTypeName","src":"1099:7:26","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"1098:24:26"},"scope":2169,"src":"1031:92:26","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":2170,"src":"881:244:26"}],"src":"688:438:26"},"id":26},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol","exportedSymbols":{"IProtocolFeePercentagesProvider":[2250],"ProtocolFeeType":[2263]},"id":2264,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2171,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:27"},{"id":2172,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:27"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2173,"nodeType":"StructuredDocumentation","src":"747:271:27","text":" @dev Source of truth for all Protocol Fee percentages, that is, how much the protocol charges certain actions. Some\n of these values may also be retrievable from other places (such as the swap fee percentage), but this is the\n preferred source nonetheless."},"fullyImplemented":false,"id":2250,"linearizedBaseContracts":[2250],"name":"IProtocolFeePercentagesProvider","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":2181,"name":"ProtocolFeeTypeRegistered","nodeType":"EventDefinition","parameters":{"id":2180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2175,"indexed":true,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2181,"src":"1248:23:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2174,"name":"uint256","nodeType":"ElementaryTypeName","src":"1248:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2177,"indexed":false,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":2181,"src":"1273:11:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2176,"name":"string","nodeType":"ElementaryTypeName","src":"1273:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2179,"indexed":false,"mutability":"mutable","name":"maximumPercentage","nodeType":"VariableDeclaration","scope":2181,"src":"1286:25:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2178,"name":"uint256","nodeType":"ElementaryTypeName","src":"1286:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1247:65:27"},"src":"1216:97:27"},{"anonymous":false,"id":2187,"name":"ProtocolFeePercentageChanged","nodeType":"EventDefinition","parameters":{"id":2186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2183,"indexed":true,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2187,"src":"1787:23:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2182,"name":"uint256","nodeType":"ElementaryTypeName","src":"1787:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2185,"indexed":false,"mutability":"mutable","name":"percentage","nodeType":"VariableDeclaration","scope":2187,"src":"1812:18:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2184,"name":"uint256","nodeType":"ElementaryTypeName","src":"1812:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1786:45:27"},"src":"1752:80:27"},{"documentation":{"id":2188,"nodeType":"StructuredDocumentation","src":"1838:363:27","text":" @dev Registers a new fee type in the system, making it queryable via `getFeeTypePercentage` and `getFeeTypeName`,\n as well as configurable via `setFeeTypePercentage`.\n `feeType` can be any arbitrary value (that is not in use).\n It is not possible to de-register fee types, nor change their name or maximum value."},"functionSelector":"7268d6ce","id":2199,"implemented":false,"kind":"function","modifiers":[],"name":"registerFeeType","nodeType":"FunctionDefinition","parameters":{"id":2197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2190,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2199,"src":"2240:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2189,"name":"uint256","nodeType":"ElementaryTypeName","src":"2240:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2192,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":2199,"src":"2265:18:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2191,"name":"string","nodeType":"ElementaryTypeName","src":"2265:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2194,"mutability":"mutable","name":"maximumValue","nodeType":"VariableDeclaration","scope":2199,"src":"2293:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2193,"name":"uint256","nodeType":"ElementaryTypeName","src":"2293:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2196,"mutability":"mutable","name":"initialValue","nodeType":"VariableDeclaration","scope":2199,"src":"2323:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2195,"name":"uint256","nodeType":"ElementaryTypeName","src":"2323:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2230:119:27"},"returnParameters":{"id":2198,"nodeType":"ParameterList","parameters":[],"src":"2358:0:27"},"scope":2250,"src":"2206:153:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2200,"nodeType":"StructuredDocumentation","src":"2365:89:27","text":" @dev Returns true if `feeType` has been registered and can be queried."},"functionSelector":"868897a0","id":2207,"implemented":false,"kind":"function","modifiers":[],"name":"isValidFeeType","nodeType":"FunctionDefinition","parameters":{"id":2203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2202,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2207,"src":"2483:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2201,"name":"uint256","nodeType":"ElementaryTypeName","src":"2483:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2482:17:27"},"returnParameters":{"id":2206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2205,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2207,"src":"2523:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2204,"name":"bool","nodeType":"ElementaryTypeName","src":"2523:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2522:6:27"},"scope":2250,"src":"2459:70:27","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2208,"nodeType":"StructuredDocumentation","src":"2535:90:27","text":" @dev Returns true if `value` is a valid percentage value for `feeType`."},"functionSelector":"74735e0b","id":2217,"implemented":false,"kind":"function","modifiers":[],"name":"isValidFeeTypePercentage","nodeType":"FunctionDefinition","parameters":{"id":2213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2210,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2217,"src":"2664:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2209,"name":"uint256","nodeType":"ElementaryTypeName","src":"2664:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2212,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2217,"src":"2681:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2211,"name":"uint256","nodeType":"ElementaryTypeName","src":"2681:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2663:32:27"},"returnParameters":{"id":2216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2215,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2217,"src":"2719:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2214,"name":"bool","nodeType":"ElementaryTypeName","src":"2719:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2718:6:27"},"scope":2250,"src":"2630:95:27","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2218,"nodeType":"StructuredDocumentation","src":"2731:570:27","text":" @dev Sets the percentage value for `feeType` to `newValue`.\n IMPORTANT: it is possible for a third party to modify the SWAP and FLASH_LOAN fee type values directly in the\n ProtocolFeesCollector, without invoking this function. This will result in the `ProtocolFeePercentageChanged`\n event not being emitted despite their value changing. Such usage of the ProtocolFeesCollector is however\n discouraged: only this contract should be granted permission to call `setSwapFeePercentage` and\n `setFlashLoanFeePercentage`."},"functionSelector":"4d44f0e9","id":2225,"implemented":false,"kind":"function","modifiers":[],"name":"setFeeTypePercentage","nodeType":"FunctionDefinition","parameters":{"id":2223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2220,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2225,"src":"3336:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2219,"name":"uint256","nodeType":"ElementaryTypeName","src":"3336:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2222,"mutability":"mutable","name":"newValue","nodeType":"VariableDeclaration","scope":2225,"src":"3353:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2221,"name":"uint256","nodeType":"ElementaryTypeName","src":"3353:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3335:35:27"},"returnParameters":{"id":2224,"nodeType":"ParameterList","parameters":[],"src":"3379:0:27"},"scope":2250,"src":"3306:74:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2226,"nodeType":"StructuredDocumentation","src":"3386:224:27","text":" @dev Returns the current percentage value for `feeType`. This is the preferred mechanism for querying these -\n whenever possible, use this fucntion instead of e.g. querying the ProtocolFeesCollector."},"functionSelector":"1a7c3263","id":2233,"implemented":false,"kind":"function","modifiers":[],"name":"getFeeTypePercentage","nodeType":"FunctionDefinition","parameters":{"id":2229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2228,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2233,"src":"3645:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2227,"name":"uint256","nodeType":"ElementaryTypeName","src":"3645:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3644:17:27"},"returnParameters":{"id":2232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2231,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2233,"src":"3685:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2230,"name":"uint256","nodeType":"ElementaryTypeName","src":"3685:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3684:9:27"},"scope":2250,"src":"3615:79:27","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2234,"nodeType":"StructuredDocumentation","src":"3700:58:27","text":" @dev Returns `feeType`'s maximum value."},"functionSelector":"5e2cae4c","id":2241,"implemented":false,"kind":"function","modifiers":[],"name":"getFeeTypeMaximumPercentage","nodeType":"FunctionDefinition","parameters":{"id":2237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2236,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2241,"src":"3800:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2235,"name":"uint256","nodeType":"ElementaryTypeName","src":"3800:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3799:17:27"},"returnParameters":{"id":2240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2239,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2241,"src":"3840:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2238,"name":"uint256","nodeType":"ElementaryTypeName","src":"3840:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3839:9:27"},"scope":2250,"src":"3763:86:27","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2242,"nodeType":"StructuredDocumentation","src":"3855:49:27","text":" @dev Returns `feeType`'s name."},"functionSelector":"b661eda1","id":2249,"implemented":false,"kind":"function","modifiers":[],"name":"getFeeTypeName","nodeType":"FunctionDefinition","parameters":{"id":2245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2244,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2249,"src":"3933:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2243,"name":"uint256","nodeType":"ElementaryTypeName","src":"3933:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3932:17:27"},"returnParameters":{"id":2248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2247,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2249,"src":"3973:13:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2246,"name":"string","nodeType":"ElementaryTypeName","src":"3973:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3972:15:27"},"scope":2250,"src":"3909:79:27","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2264,"src":"1019:2971:27"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":2263,"linearizedBaseContracts":[2263],"name":"ProtocolFeeType","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2253,"mutability":"constant","name":"SWAP","nodeType":"VariableDeclaration","scope":2263,"src":"4326:34:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2251,"name":"uint256","nodeType":"ElementaryTypeName","src":"4326:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":2252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4359:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"constant":true,"id":2256,"mutability":"constant","name":"FLASH_LOAN","nodeType":"VariableDeclaration","scope":2263,"src":"4366:40:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2254,"name":"uint256","nodeType":"ElementaryTypeName","src":"4366:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4405:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":2259,"mutability":"constant","name":"YIELD","nodeType":"VariableDeclaration","scope":2263,"src":"4412:35:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2257,"name":"uint256","nodeType":"ElementaryTypeName","src":"4412:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":2258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4446:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"constant":true,"id":2262,"mutability":"constant","name":"AUM","nodeType":"VariableDeclaration","scope":2263,"src":"4453:33:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2260,"name":"uint256","nodeType":"ElementaryTypeName","src":"4453:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4485:1:27","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"}],"scope":2264,"src":"3992:551:27"}],"src":"688:3856:27"},"id":27},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol","exportedSymbols":{"IProtocolFeesWithdrawer":[2337]},"id":2338,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2265,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:28"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","file":"../vault/IProtocolFeesCollector.sol","id":2266,"nodeType":"ImportDirective","scope":2338,"sourceUnit":2907,"src":"713:45:28","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2267,"nodeType":"StructuredDocumentation","src":"760:321:28","text":" @author Balancer Labs\n @title Protocol Fees Withdrawer\n @notice Safety layer around the Protocol Fees Collector which allows withdrawals of specific tokens to be blocked.\n This is useful for the case in where tokens that shouldn't be distributed are unexpectedly paid into the Protocol\n Fees Collector."},"fullyImplemented":false,"id":2337,"linearizedBaseContracts":[2337],"name":"IProtocolFeesWithdrawer","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":2271,"name":"TokenAllowlisted","nodeType":"EventDefinition","parameters":{"id":2270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2269,"indexed":false,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2271,"src":"1145:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":2268,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1145:6:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1144:14:28"},"src":"1122:37:28"},{"anonymous":false,"id":2275,"name":"TokenDenylisted","nodeType":"EventDefinition","parameters":{"id":2274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2273,"indexed":false,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2275,"src":"1186:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":2272,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1186:6:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1185:14:28"},"src":"1164:36:28"},{"documentation":{"id":2276,"nodeType":"StructuredDocumentation","src":"1206:77:28","text":" @notice Returns the address of the Protocol Fee Collector."},"functionSelector":"d2946c2b","id":2281,"implemented":false,"kind":"function","modifiers":[],"name":"getProtocolFeesCollector","nodeType":"FunctionDefinition","parameters":{"id":2277,"nodeType":"ParameterList","parameters":[],"src":"1321:2:28"},"returnParameters":{"id":2280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2279,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2281,"src":"1347:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":2278,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":2906,"src":"1347:22:28","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"src":"1346:24:28"},"scope":2337,"src":"1288:83:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2282,"nodeType":"StructuredDocumentation","src":"1377:110:28","text":" @notice Returns whether the provided token may be withdrawn from the Protocol Fee Collector"},"functionSelector":"cdf0e934","id":2289,"implemented":false,"kind":"function","modifiers":[],"name":"isWithdrawableToken","nodeType":"FunctionDefinition","parameters":{"id":2285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2284,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2289,"src":"1521:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":2283,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1521:6:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1520:14:28"},"returnParameters":{"id":2288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2287,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2289,"src":"1558:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2286,"name":"bool","nodeType":"ElementaryTypeName","src":"1558:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1557:6:28"},"scope":2337,"src":"1492:72:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2290,"nodeType":"StructuredDocumentation","src":"1570:174:28","text":" @notice Returns whether the provided array of tokens may be withdrawn from the Protocol Fee Collector\n @dev Returns false if any token is denylisted."},"functionSelector":"a21dfaee","id":2298,"implemented":false,"kind":"function","modifiers":[],"name":"isWithdrawableTokens","nodeType":"FunctionDefinition","parameters":{"id":2294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2293,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2298,"src":"1779:24:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2291,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1779:6:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":2292,"nodeType":"ArrayTypeName","src":"1779:8:28","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1778:26:28"},"returnParameters":{"id":2297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2296,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2298,"src":"1828:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2295,"name":"bool","nodeType":"ElementaryTypeName","src":"1828:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1827:6:28"},"scope":2337,"src":"1749:85:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2299,"nodeType":"StructuredDocumentation","src":"1840:77:28","text":" @notice Returns the denylisted token at the given `index`."},"functionSelector":"fd3a0cdd","id":2306,"implemented":false,"kind":"function","modifiers":[],"name":"getDenylistedToken","nodeType":"FunctionDefinition","parameters":{"id":2302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2301,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":2306,"src":"1950:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2300,"name":"uint256","nodeType":"ElementaryTypeName","src":"1950:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1949:15:28"},"returnParameters":{"id":2305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2304,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2306,"src":"1988:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":2303,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1988:6:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1987:8:28"},"scope":2337,"src":"1922:74:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2307,"nodeType":"StructuredDocumentation","src":"2002:67:28","text":" @notice Returns the number of denylisted tokens."},"functionSelector":"8dd26fc6","id":2312,"implemented":false,"kind":"function","modifiers":[],"name":"getDenylistedTokensLength","nodeType":"FunctionDefinition","parameters":{"id":2308,"nodeType":"ParameterList","parameters":[],"src":"2108:2:28"},"returnParameters":{"id":2311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2310,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2312,"src":"2134:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2309,"name":"uint256","nodeType":"ElementaryTypeName","src":"2134:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2133:9:28"},"scope":2337,"src":"2074:69:28","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2313,"nodeType":"StructuredDocumentation","src":"2149:356:28","text":" @notice Withdraws fees from the Protocol Fee Collector.\n @dev Reverts if attempting to withdraw a denylisted token.\n @param tokens - an array of token addresses to withdraw.\n @param amounts - an array of the amounts of each token to withdraw.\n @param recipient - the address to which to send the withdrawn tokens."},"functionSelector":"6daefab6","id":2324,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawCollectedFees","nodeType":"FunctionDefinition","parameters":{"id":2322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2316,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2324,"src":"2550:24:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2314,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2550:6:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":2315,"nodeType":"ArrayTypeName","src":"2550:8:28","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2319,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":2324,"src":"2584:26:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2317,"name":"uint256","nodeType":"ElementaryTypeName","src":"2584:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2318,"nodeType":"ArrayTypeName","src":"2584:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2321,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2324,"src":"2620:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2320,"name":"address","nodeType":"ElementaryTypeName","src":"2620:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2540:103:28"},"returnParameters":{"id":2323,"nodeType":"ParameterList","parameters":[],"src":"2652:0:28"},"scope":2337,"src":"2510:143:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2325,"nodeType":"StructuredDocumentation","src":"2659:112:28","text":" @notice Marks the provided token as ineligible for withdrawal from the Protocol Fee Collector"},"functionSelector":"194d810f","id":2330,"implemented":false,"kind":"function","modifiers":[],"name":"denylistToken","nodeType":"FunctionDefinition","parameters":{"id":2328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2327,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2330,"src":"2799:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":2326,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2799:6:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2798:14:28"},"returnParameters":{"id":2329,"nodeType":"ParameterList","parameters":[],"src":"2821:0:28"},"scope":2337,"src":"2776:46:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2331,"nodeType":"StructuredDocumentation","src":"2828:110:28","text":" @notice Marks the provided token as eligible for withdrawal from the Protocol Fee Collector"},"functionSelector":"de0b27c9","id":2336,"implemented":false,"kind":"function","modifiers":[],"name":"allowlistToken","nodeType":"FunctionDefinition","parameters":{"id":2334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2333,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2336,"src":"2967:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":2332,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2967:6:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2966:14:28"},"returnParameters":{"id":2335,"nodeType":"ParameterList","parameters":[],"src":"2989:0:28"},"scope":2337,"src":"2943:47:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2338,"src":"1082:1910:28"}],"src":"688:2305:28"},"id":28},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol","exportedSymbols":{"IStaticATokenLM":[2584]},"id":2585,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2339,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"45:23:29"},{"id":2340,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"69:33:29"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2341,"nodeType":"ImportDirective","scope":2585,"sourceUnit":1965,"src":"104:51:29","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2342,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"367:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":2343,"nodeType":"InheritanceSpecifier","src":"367:6:29"}],"contractDependencies":[1964],"contractKind":"interface","fullyImplemented":false,"id":2584,"linearizedBaseContracts":[2584,1964],"name":"IStaticATokenLM","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IStaticATokenLM.SignatureParams","id":2350,"members":[{"constant":false,"id":2345,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":2350,"src":"413:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2344,"name":"uint8","nodeType":"ElementaryTypeName","src":"413:5:29","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2347,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":2350,"src":"430:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2346,"name":"bytes32","nodeType":"ElementaryTypeName","src":"430:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2349,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":2350,"src":"449:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2348,"name":"bytes32","nodeType":"ElementaryTypeName","src":"449:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"SignatureParams","nodeType":"StructDefinition","scope":2584,"src":"380:85:29","visibility":"public"},{"documentation":{"id":2351,"nodeType":"StructuredDocumentation","src":"471:722:29","text":" @notice Deposits `ASSET` in the Aave protocol and mints static aTokens to msg.sender\n @param recipient The address that will receive the static aTokens\n @param amount The amount of underlying `ASSET` to deposit (e.g. deposit of 100 USDC)\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n 0 if the action is executed directly by the user, without any middle-man\n @param fromUnderlying bool\n - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n @return uint256 The amount of StaticAToken minted, static balance*"},"functionSelector":"2f2cab87","id":2364,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":2360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2353,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2364,"src":"1224:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2352,"name":"address","nodeType":"ElementaryTypeName","src":"1224:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2355,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2364,"src":"1251:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2354,"name":"uint256","nodeType":"ElementaryTypeName","src":"1251:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2357,"mutability":"mutable","name":"referralCode","nodeType":"VariableDeclaration","scope":2364,"src":"1275:19:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2356,"name":"uint16","nodeType":"ElementaryTypeName","src":"1275:6:29","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":2359,"mutability":"mutable","name":"fromUnderlying","nodeType":"VariableDeclaration","scope":2364,"src":"1304:19:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2358,"name":"bool","nodeType":"ElementaryTypeName","src":"1304:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1214:115:29"},"returnParameters":{"id":2363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2362,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2364,"src":"1348:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2361,"name":"uint256","nodeType":"ElementaryTypeName","src":"1348:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1347:9:29"},"scope":2584,"src":"1198:159:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2365,"nodeType":"StructuredDocumentation","src":"1363:628:29","text":" @notice Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n @param amount The amount to withdraw, in static balance of StaticAToken\n @param toUnderlying bool\n - `true` for the recipient to get underlying tokens (e.g. USDC)\n - `false` for the recipient to get aTokens (e.g. aUSDC)\n @return amountToBurn: StaticATokens burnt, static balance\n @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance*"},"functionSelector":"ead5d359","id":2378,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":2372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2367,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2378,"src":"2023:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2366,"name":"address","nodeType":"ElementaryTypeName","src":"2023:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2369,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2378,"src":"2050:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2368,"name":"uint256","nodeType":"ElementaryTypeName","src":"2050:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2371,"mutability":"mutable","name":"toUnderlying","nodeType":"VariableDeclaration","scope":2378,"src":"2074:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2370,"name":"bool","nodeType":"ElementaryTypeName","src":"2074:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2013:84:29"},"returnParameters":{"id":2377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2374,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2378,"src":"2116:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2373,"name":"uint256","nodeType":"ElementaryTypeName","src":"2116:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2376,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2378,"src":"2125:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2375,"name":"uint256","nodeType":"ElementaryTypeName","src":"2125:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2115:18:29"},"scope":2584,"src":"1996:138:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2379,"nodeType":"StructuredDocumentation","src":"2140:640:29","text":" @notice Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n @param amount The amount to withdraw, in dynamic balance of aToken/underlying asset\n @param toUnderlying bool\n - `true` for the recipient to get underlying tokens (e.g. USDC)\n - `false` for the recipient to get aTokens (e.g. aUSDC)\n @return amountToBurn: StaticATokens burnt, static balance\n @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance*"},"functionSelector":"288587ce","id":2392,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawDynamicAmount","nodeType":"FunctionDefinition","parameters":{"id":2386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2381,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2392,"src":"2825:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2380,"name":"address","nodeType":"ElementaryTypeName","src":"2825:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2383,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2392,"src":"2852:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2382,"name":"uint256","nodeType":"ElementaryTypeName","src":"2852:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2385,"mutability":"mutable","name":"toUnderlying","nodeType":"VariableDeclaration","scope":2392,"src":"2876:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2384,"name":"bool","nodeType":"ElementaryTypeName","src":"2876:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2815:84:29"},"returnParameters":{"id":2391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2388,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2392,"src":"2918:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2387,"name":"uint256","nodeType":"ElementaryTypeName","src":"2918:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2390,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2392,"src":"2927:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2389,"name":"uint256","nodeType":"ElementaryTypeName","src":"2927:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2917:18:29"},"scope":2584,"src":"2785:151:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2393,"nodeType":"StructuredDocumentation","src":"2942:453:29","text":" @notice Implements the permit function as for\n https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n @param owner The owner of the funds\n @param spender The spender\n @param value The amount\n @param deadline The deadline timestamp, type(uint256).max for max deadline\n @param v Signature param\n @param s Signature param\n @param r Signature param"},"functionSelector":"d505accf","id":2410,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":2408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2395,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2410,"src":"3425:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2394,"name":"address","nodeType":"ElementaryTypeName","src":"3425:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2397,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2410,"src":"3448:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2396,"name":"address","nodeType":"ElementaryTypeName","src":"3448:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2399,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2410,"src":"3473:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2398,"name":"uint256","nodeType":"ElementaryTypeName","src":"3473:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2401,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":2410,"src":"3496:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2400,"name":"uint256","nodeType":"ElementaryTypeName","src":"3496:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2403,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":2410,"src":"3522:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2402,"name":"uint8","nodeType":"ElementaryTypeName","src":"3522:5:29","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2405,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":2410,"src":"3539:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2404,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3539:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2407,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":2410,"src":"3558:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2406,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3558:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3415:158:29"},"returnParameters":{"id":2409,"nodeType":"ParameterList","parameters":[],"src":"3582:0:29"},"scope":2584,"src":"3400:183:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2411,"nodeType":"StructuredDocumentation","src":"3589:1002:29","text":" @notice Allows to deposit on Aave via meta-transaction\n https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n @param depositor Address from which the funds to deposit are going to be pulled\n @param recipient Address that will receive the staticATokens, in the average case, same as the `depositor`\n @param value The amount to deposit\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n 0 if the action is executed directly by the user, without any middle-man\n @param fromUnderlying bool\n - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n @param deadline The deadline timestamp, type(uint256).max for max deadline\n @param sigParams Signature params: v,r,s\n @return uint256 The amount of StaticAToken minted, static balance"},"functionSelector":"c485852b","id":2430,"implemented":false,"kind":"function","modifiers":[],"name":"metaDeposit","nodeType":"FunctionDefinition","parameters":{"id":2426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2413,"mutability":"mutable","name":"depositor","nodeType":"VariableDeclaration","scope":2430,"src":"4626:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2412,"name":"address","nodeType":"ElementaryTypeName","src":"4626:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2415,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2430,"src":"4653:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2414,"name":"address","nodeType":"ElementaryTypeName","src":"4653:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2417,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2430,"src":"4680:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2416,"name":"uint256","nodeType":"ElementaryTypeName","src":"4680:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2419,"mutability":"mutable","name":"referralCode","nodeType":"VariableDeclaration","scope":2430,"src":"4703:19:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2418,"name":"uint16","nodeType":"ElementaryTypeName","src":"4703:6:29","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":2421,"mutability":"mutable","name":"fromUnderlying","nodeType":"VariableDeclaration","scope":2430,"src":"4732:19:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2420,"name":"bool","nodeType":"ElementaryTypeName","src":"4732:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2423,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":2430,"src":"4761:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2422,"name":"uint256","nodeType":"ElementaryTypeName","src":"4761:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2425,"mutability":"mutable","name":"sigParams","nodeType":"VariableDeclaration","scope":2430,"src":"4787:34:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2350_calldata_ptr","typeString":"struct IStaticATokenLM.SignatureParams"},"typeName":{"id":2424,"name":"SignatureParams","nodeType":"UserDefinedTypeName","referencedDeclaration":2350,"src":"4787:15:29","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2350_storage_ptr","typeString":"struct IStaticATokenLM.SignatureParams"}},"visibility":"internal"}],"src":"4616:211:29"},"returnParameters":{"id":2429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2428,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2430,"src":"4846:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2427,"name":"uint256","nodeType":"ElementaryTypeName","src":"4846:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4845:9:29"},"scope":2584,"src":"4596:259:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2431,"nodeType":"StructuredDocumentation","src":"4861:981:29","text":" @notice Allows to withdraw from Aave via meta-transaction\n https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n @param owner Address owning the staticATokens\n @param recipient Address that will receive the underlying withdrawn from Aave\n @param staticAmount The amount of staticAToken to withdraw. If > 0, `dynamicAmount` needs to be 0\n @param dynamicAmount The amount of underlying/aToken to withdraw. If > 0, `staticAmount` needs to be 0\n @param toUnderlying bool\n - `true` for the recipient to get underlying tokens (e.g. USDC)\n - `false` for the recipient to get aTokens (e.g. aUSDC)\n @param deadline The deadline timestamp, type(uint256).max for max deadline\n @param sigParams Signature params: v,r,s\n @return amountToBurn: StaticATokens burnt, static balance\n @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance"},"functionSelector":"60266557","id":2452,"implemented":false,"kind":"function","modifiers":[],"name":"metaWithdraw","nodeType":"FunctionDefinition","parameters":{"id":2446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2433,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2452,"src":"5878:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2432,"name":"address","nodeType":"ElementaryTypeName","src":"5878:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2435,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2452,"src":"5901:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2434,"name":"address","nodeType":"ElementaryTypeName","src":"5901:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2437,"mutability":"mutable","name":"staticAmount","nodeType":"VariableDeclaration","scope":2452,"src":"5928:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2436,"name":"uint256","nodeType":"ElementaryTypeName","src":"5928:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"dynamicAmount","nodeType":"VariableDeclaration","scope":2452,"src":"5958:21:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2438,"name":"uint256","nodeType":"ElementaryTypeName","src":"5958:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2441,"mutability":"mutable","name":"toUnderlying","nodeType":"VariableDeclaration","scope":2452,"src":"5989:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2440,"name":"bool","nodeType":"ElementaryTypeName","src":"5989:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2443,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":2452,"src":"6016:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2442,"name":"uint256","nodeType":"ElementaryTypeName","src":"6016:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2445,"mutability":"mutable","name":"sigParams","nodeType":"VariableDeclaration","scope":2452,"src":"6042:34:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2350_calldata_ptr","typeString":"struct IStaticATokenLM.SignatureParams"},"typeName":{"id":2444,"name":"SignatureParams","nodeType":"UserDefinedTypeName","referencedDeclaration":2350,"src":"6042:15:29","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2350_storage_ptr","typeString":"struct IStaticATokenLM.SignatureParams"}},"visibility":"internal"}],"src":"5868:214:29"},"returnParameters":{"id":2451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2448,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2452,"src":"6101:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2447,"name":"uint256","nodeType":"ElementaryTypeName","src":"6101:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2450,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2452,"src":"6110:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2449,"name":"uint256","nodeType":"ElementaryTypeName","src":"6110:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6100:18:29"},"scope":2584,"src":"5847:272:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2453,"nodeType":"StructuredDocumentation","src":"6125:206:29","text":" @notice Utility method to get the current aToken balance of an user, from his staticAToken balance\n @param account The address of the user\n @return uint256 The aToken balance*"},"functionSelector":"44b68c3f","id":2460,"implemented":false,"kind":"function","modifiers":[],"name":"dynamicBalanceOf","nodeType":"FunctionDefinition","parameters":{"id":2456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2455,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":2460,"src":"6362:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2454,"name":"address","nodeType":"ElementaryTypeName","src":"6362:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6361:17:29"},"returnParameters":{"id":2459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2458,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2460,"src":"6402:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2457,"name":"uint256","nodeType":"ElementaryTypeName","src":"6402:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6401:9:29"},"scope":2584,"src":"6336:75:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2461,"nodeType":"StructuredDocumentation","src":"6417:250:29","text":" @notice Converts a static amount (scaled balance on aToken) to the aToken/underlying value,\n using the current liquidity index on Aave\n @param amount The amount to convert from\n @return uint256 The dynamic amount*"},"functionSelector":"f57d0b40","id":2468,"implemented":false,"kind":"function","modifiers":[],"name":"staticToDynamicAmount","nodeType":"FunctionDefinition","parameters":{"id":2464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2463,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2468,"src":"6703:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2462,"name":"uint256","nodeType":"ElementaryTypeName","src":"6703:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6702:16:29"},"returnParameters":{"id":2467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2466,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2468,"src":"6742:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2465,"name":"uint256","nodeType":"ElementaryTypeName","src":"6742:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6741:9:29"},"scope":2584,"src":"6672:79:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2469,"nodeType":"StructuredDocumentation","src":"6757:285:29","text":" @notice Converts an aToken or underlying amount to the what it is denominated on the aToken as\n scaled balance, function of the principal and the liquidity index\n @param amount The amount to convert from\n @return uint256 The static (scaled) amount*"},"functionSelector":"36a5a6d6","id":2476,"implemented":false,"kind":"function","modifiers":[],"name":"dynamicToStaticAmount","nodeType":"FunctionDefinition","parameters":{"id":2472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2471,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2476,"src":"7078:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2470,"name":"uint256","nodeType":"ElementaryTypeName","src":"7078:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7077:16:29"},"returnParameters":{"id":2475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2474,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2476,"src":"7117:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2473,"name":"uint256","nodeType":"ElementaryTypeName","src":"7117:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7116:9:29"},"scope":2584,"src":"7047:79:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2477,"nodeType":"StructuredDocumentation","src":"7132:210:29","text":" @notice Returns the Aave liquidity index of the underlying aToken, denominated rate here\n as it can be considered as an ever-increasing exchange rate\n @return The liquidity index*"},"functionSelector":"2c4e722e","id":2482,"implemented":false,"kind":"function","modifiers":[],"name":"rate","nodeType":"FunctionDefinition","parameters":{"id":2478,"nodeType":"ParameterList","parameters":[],"src":"7360:2:29"},"returnParameters":{"id":2481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2480,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2482,"src":"7386:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2479,"name":"uint256","nodeType":"ElementaryTypeName","src":"7386:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7385:9:29"},"scope":2584,"src":"7347:48:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2483,"nodeType":"StructuredDocumentation","src":"7401:172:29","text":" @notice Function to return a dynamic domain separator, in order to be compatible with forks changing chainId\n @return bytes32 The domain separator*"},"functionSelector":"ed24911d","id":2488,"implemented":false,"kind":"function","modifiers":[],"name":"getDomainSeparator","nodeType":"FunctionDefinition","parameters":{"id":2484,"nodeType":"ParameterList","parameters":[],"src":"7605:2:29"},"returnParameters":{"id":2487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2486,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2488,"src":"7631:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2485,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7631:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7630:9:29"},"scope":2584,"src":"7578:62:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2489,"nodeType":"StructuredDocumentation","src":"7646:114:29","text":" @notice Claims rewards from `INCENTIVES_CONTROLLER` and updates internal accounting of rewards."},"functionSelector":"3eb2eba6","id":2492,"implemented":false,"kind":"function","modifiers":[],"name":"collectAndUpdateRewards","nodeType":"FunctionDefinition","parameters":{"id":2490,"nodeType":"ParameterList","parameters":[],"src":"7797:2:29"},"returnParameters":{"id":2491,"nodeType":"ParameterList","parameters":[],"src":"7808:0:29"},"scope":2584,"src":"7765:44:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2493,"nodeType":"StructuredDocumentation","src":"7815:375:29","text":" @notice Claim rewards on behalf of a user and send them to a receiver\n @dev Only callable by if sender is onBehalfOf or sender is approved claimer\n @param onBehalfOf The address to claim on behalf of\n @param receiver The address to receive the rewards\n @param forceUpdate Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`"},"functionSelector":"dd05aa12","id":2502,"implemented":false,"kind":"function","modifiers":[],"name":"claimRewardsOnBehalf","nodeType":"FunctionDefinition","parameters":{"id":2500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2495,"mutability":"mutable","name":"onBehalfOf","nodeType":"VariableDeclaration","scope":2502,"src":"8234:18:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2494,"name":"address","nodeType":"ElementaryTypeName","src":"8234:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2497,"mutability":"mutable","name":"receiver","nodeType":"VariableDeclaration","scope":2502,"src":"8262:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2496,"name":"address","nodeType":"ElementaryTypeName","src":"8262:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"forceUpdate","nodeType":"VariableDeclaration","scope":2502,"src":"8288:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2498,"name":"bool","nodeType":"ElementaryTypeName","src":"8288:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8224:86:29"},"returnParameters":{"id":2501,"nodeType":"ParameterList","parameters":[],"src":"8319:0:29"},"scope":2584,"src":"8195:125:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2503,"nodeType":"StructuredDocumentation","src":"8326:213:29","text":" @notice Claim rewards and send them to a receiver\n @param receiver The address to receive the rewards\n @param forceUpdate Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`"},"functionSelector":"491c011a","id":2510,"implemented":false,"kind":"function","modifiers":[],"name":"claimRewards","nodeType":"FunctionDefinition","parameters":{"id":2508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2505,"mutability":"mutable","name":"receiver","nodeType":"VariableDeclaration","scope":2510,"src":"8566:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2504,"name":"address","nodeType":"ElementaryTypeName","src":"8566:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2507,"mutability":"mutable","name":"forceUpdate","nodeType":"VariableDeclaration","scope":2510,"src":"8584:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2506,"name":"bool","nodeType":"ElementaryTypeName","src":"8584:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8565:36:29"},"returnParameters":{"id":2509,"nodeType":"ParameterList","parameters":[],"src":"8610:0:29"},"scope":2584,"src":"8544:67:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2511,"nodeType":"StructuredDocumentation","src":"8617:127:29","text":" @notice Claim rewards\n @param forceUpdate Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`"},"functionSelector":"45c1ace7","id":2516,"implemented":false,"kind":"function","modifiers":[],"name":"claimRewardsToSelf","nodeType":"FunctionDefinition","parameters":{"id":2514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2513,"mutability":"mutable","name":"forceUpdate","nodeType":"VariableDeclaration","scope":2516,"src":"8777:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2512,"name":"bool","nodeType":"ElementaryTypeName","src":"8777:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8776:18:29"},"returnParameters":{"id":2515,"nodeType":"ParameterList","parameters":[],"src":"8803:0:29"},"scope":2584,"src":"8749:55:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2517,"nodeType":"StructuredDocumentation","src":"8810:161:29","text":" @notice Get the total claimable rewards of the contract.\n @return The current balance + pending rewards from the `_incentivesController`"},"functionSelector":"7f372cff","id":2522,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalClaimableRewards","nodeType":"FunctionDefinition","parameters":{"id":2518,"nodeType":"ParameterList","parameters":[],"src":"9009:2:29"},"returnParameters":{"id":2521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2520,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2522,"src":"9035:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2519,"name":"uint256","nodeType":"ElementaryTypeName","src":"9035:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9034:9:29"},"scope":2584,"src":"8976:68:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2523,"nodeType":"StructuredDocumentation","src":"9050:173:29","text":" @notice Get the total claimable rewards for a user in WAD\n @param user The address of the user\n @return The claimable amount of rewards in WAD"},"functionSelector":"308e401e","id":2530,"implemented":false,"kind":"function","modifiers":[],"name":"getClaimableRewards","nodeType":"FunctionDefinition","parameters":{"id":2526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2525,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2530,"src":"9257:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2524,"name":"address","nodeType":"ElementaryTypeName","src":"9257:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9256:14:29"},"returnParameters":{"id":2529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2528,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2530,"src":"9294:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2527,"name":"uint256","nodeType":"ElementaryTypeName","src":"9294:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9293:9:29"},"scope":2584,"src":"9228:75:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2531,"nodeType":"StructuredDocumentation","src":"9309:163:29","text":" @notice The unclaimed rewards for a user in WAD\n @param user The address of the user\n @return The unclaimed amount of rewards in WAD"},"functionSelector":"69a69e29","id":2538,"implemented":false,"kind":"function","modifiers":[],"name":"getUnclaimedRewards","nodeType":"FunctionDefinition","parameters":{"id":2534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2533,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2538,"src":"9506:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2532,"name":"address","nodeType":"ElementaryTypeName","src":"9506:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9505:14:29"},"returnParameters":{"id":2537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2536,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2538,"src":"9543:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2535,"name":"uint256","nodeType":"ElementaryTypeName","src":"9543:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9542:9:29"},"scope":2584,"src":"9477:75:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a135a55e","id":2543,"implemented":false,"kind":"function","modifiers":[],"name":"getAccRewardsPerToken","nodeType":"FunctionDefinition","parameters":{"id":2539,"nodeType":"ParameterList","parameters":[],"src":"9588:2:29"},"returnParameters":{"id":2542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2541,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2543,"src":"9614:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2540,"name":"uint256","nodeType":"ElementaryTypeName","src":"9614:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9613:9:29"},"scope":2584,"src":"9558:65:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"31a5cfa4","id":2548,"implemented":false,"kind":"function","modifiers":[],"name":"getLifetimeRewardsClaimed","nodeType":"FunctionDefinition","parameters":{"id":2544,"nodeType":"ParameterList","parameters":[],"src":"9663:2:29"},"returnParameters":{"id":2547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2546,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2548,"src":"9689:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2545,"name":"uint256","nodeType":"ElementaryTypeName","src":"9689:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9688:9:29"},"scope":2584,"src":"9629:69:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b3a59022","id":2553,"implemented":false,"kind":"function","modifiers":[],"name":"getLifetimeRewards","nodeType":"FunctionDefinition","parameters":{"id":2549,"nodeType":"ParameterList","parameters":[],"src":"9731:2:29"},"returnParameters":{"id":2552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2551,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2553,"src":"9757:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2550,"name":"uint256","nodeType":"ElementaryTypeName","src":"9757:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9756:9:29"},"scope":2584,"src":"9704:62:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"bf62bee6","id":2558,"implemented":false,"kind":"function","modifiers":[],"name":"getLastRewardBlock","nodeType":"FunctionDefinition","parameters":{"id":2554,"nodeType":"ParameterList","parameters":[],"src":"9799:2:29"},"returnParameters":{"id":2557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2556,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2558,"src":"9825:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2555,"name":"uint256","nodeType":"ElementaryTypeName","src":"9825:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9824:9:29"},"scope":2584,"src":"9772:62:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b4dcfc77","id":2563,"implemented":false,"kind":"function","modifiers":[],"name":"LENDING_POOL","nodeType":"FunctionDefinition","parameters":{"id":2559,"nodeType":"ParameterList","parameters":[],"src":"9914:2:29"},"returnParameters":{"id":2562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2561,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2563,"src":"9935:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2560,"name":"address","nodeType":"ElementaryTypeName","src":"9935:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9934:9:29"},"scope":2584,"src":"9893:51:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"10d0ab22","id":2568,"implemented":false,"kind":"function","modifiers":[],"name":"INCENTIVES_CONTROLLER","nodeType":"FunctionDefinition","parameters":{"id":2564,"nodeType":"ParameterList","parameters":[],"src":"10033:2:29"},"returnParameters":{"id":2567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2566,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2568,"src":"10054:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2565,"name":"address","nodeType":"ElementaryTypeName","src":"10054:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10053:9:29"},"scope":2584,"src":"10003:60:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"51c0e061","id":2573,"implemented":false,"kind":"function","modifiers":[],"name":"ATOKEN","nodeType":"FunctionDefinition","parameters":{"id":2569,"nodeType":"ParameterList","parameters":[],"src":"10137:2:29"},"returnParameters":{"id":2572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2571,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2573,"src":"10158:6:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":2570,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"10158:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"10157:8:29"},"scope":2584,"src":"10122:44:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"4800d97f","id":2578,"implemented":false,"kind":"function","modifiers":[],"name":"ASSET","nodeType":"FunctionDefinition","parameters":{"id":2574,"nodeType":"ParameterList","parameters":[],"src":"10239:2:29"},"returnParameters":{"id":2577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2576,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2578,"src":"10260:6:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":2575,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"10260:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"10259:8:29"},"scope":2584,"src":"10225:43:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"99248ea7","id":2583,"implemented":false,"kind":"function","modifiers":[],"name":"REWARD_TOKEN","nodeType":"FunctionDefinition","parameters":{"id":2579,"nodeType":"ParameterList","parameters":[],"src":"10348:2:29"},"returnParameters":{"id":2582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2581,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2583,"src":"10369:6:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":2580,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"10369:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"10368:8:29"},"scope":2584,"src":"10327:50:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2585,"src":"338:10041:29"}],"src":"45:10335:29"},"id":29},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","exportedSymbols":{"IstETH":[2597]},"id":2598,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2586,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:30"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2587,"nodeType":"ImportDirective","scope":2598,"sourceUnit":1965,"src":"713:51:30","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2588,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"956:6:30","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":2589,"nodeType":"InheritanceSpecifier","src":"956:6:30"}],"contractDependencies":[1964],"contractKind":"interface","fullyImplemented":false,"id":2597,"linearizedBaseContracts":[2597,1964],"name":"IstETH","nodeType":"ContractDefinition","nodes":[{"functionSelector":"a1903eab","id":2596,"implemented":false,"kind":"function","modifiers":[],"name":"submit","nodeType":"FunctionDefinition","parameters":{"id":2592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2591,"mutability":"mutable","name":"referral","nodeType":"VariableDeclaration","scope":2596,"src":"985:16:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2590,"name":"address","nodeType":"ElementaryTypeName","src":"985:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"984:18:30"},"returnParameters":{"id":2595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2594,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2596,"src":"1029:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2593,"name":"uint256","nodeType":"ElementaryTypeName","src":"1029:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1028:9:30"},"scope":2597,"src":"969:69:30","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":2598,"src":"936:104:30"}],"src":"688:353:30"},"id":30},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol","exportedSymbols":{"IwstETH":[2654]},"id":2655,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2599,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:31"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2600,"nodeType":"ImportDirective","scope":2655,"sourceUnit":1965,"src":"713:51:31","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","file":"./IstETH.sol","id":2601,"nodeType":"ImportDirective","scope":2655,"sourceUnit":2598,"src":"766:22:31","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2603,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1795:6:31","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":2604,"nodeType":"InheritanceSpecifier","src":"1795:6:31"}],"contractDependencies":[1964],"contractKind":"interface","documentation":{"id":2602,"nodeType":"StructuredDocumentation","src":"962:811:31","text":" @title StETH token wrapper with static balances.\n @dev It's an ERC20 token that represents the account's share of the total\n supply of stETH tokens. WstETH token's balance only changes on transfers,\n unlike StETH that is also changed when oracles report staking rewards and\n penalties. It's a \"power user\" token for DeFi protocols which don't\n support rebasable tokens.\n The contract is also a trustless wrapper that accepts stETH tokens and mints\n wstETH in return. Then the user unwraps, the contract burns user's wstETH\n and sends user locked stETH in return.\n The contract provides the staking shortcut: user can send ETH with regular\n transfer and get wstETH in return. The contract will send ETH to Lido submit\n method, staking it and wrapping the received stETH."},"fullyImplemented":false,"id":2654,"linearizedBaseContracts":[2654,1964],"name":"IwstETH","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c1fe3e48","id":2609,"implemented":false,"kind":"function","modifiers":[],"name":"stETH","nodeType":"FunctionDefinition","parameters":{"id":2605,"nodeType":"ParameterList","parameters":[],"src":"1822:2:31"},"returnParameters":{"id":2608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2607,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2609,"src":"1843:6:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"},"typeName":{"id":2606,"name":"IstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2597,"src":"1843:6:31","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"visibility":"internal"}],"src":"1842:8:31"},"scope":2654,"src":"1808:43:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2610,"nodeType":"StructuredDocumentation","src":"1857:477:31","text":" @notice Exchanges stETH to wstETH\n @param _stETHAmount amount of stETH to wrap in exchange for wstETH\n @dev Requirements:\n - `_stETHAmount` must be non-zero\n - msg.sender must approve at least `_stETHAmount` stETH to this\n contract.\n - msg.sender must have at least `_stETHAmount` of stETH.\n User should first approve _stETHAmount to the WstETH contract\n @return Amount of wstETH user receives after wrap"},"functionSelector":"ea598cb0","id":2617,"implemented":false,"kind":"function","modifiers":[],"name":"wrap","nodeType":"FunctionDefinition","parameters":{"id":2613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2612,"mutability":"mutable","name":"_stETHAmount","nodeType":"VariableDeclaration","scope":2617,"src":"2353:20:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2611,"name":"uint256","nodeType":"ElementaryTypeName","src":"2353:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2352:22:31"},"returnParameters":{"id":2616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2615,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2617,"src":"2393:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2614,"name":"uint256","nodeType":"ElementaryTypeName","src":"2393:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2392:9:31"},"scope":2654,"src":"2339:63:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2618,"nodeType":"StructuredDocumentation","src":"2408:319:31","text":" @notice Exchanges wstETH to stETH\n @param _wstETHAmount amount of wstETH to uwrap in exchange for stETH\n @dev Requirements:\n - `_wstETHAmount` must be non-zero\n - msg.sender must have at least `_wstETHAmount` wstETH.\n @return Amount of stETH user receives after unwrap"},"functionSelector":"de0e9a3e","id":2625,"implemented":false,"kind":"function","modifiers":[],"name":"unwrap","nodeType":"FunctionDefinition","parameters":{"id":2621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2620,"mutability":"mutable","name":"_wstETHAmount","nodeType":"VariableDeclaration","scope":2625,"src":"2748:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2619,"name":"uint256","nodeType":"ElementaryTypeName","src":"2748:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2747:23:31"},"returnParameters":{"id":2624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2623,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2625,"src":"2789:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2622,"name":"uint256","nodeType":"ElementaryTypeName","src":"2789:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2788:9:31"},"scope":2654,"src":"2732:66:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2626,"nodeType":"StructuredDocumentation","src":"2804:175:31","text":" @notice Get amount of wstETH for a given amount of stETH\n @param _stETHAmount amount of stETH\n @return Amount of wstETH for a given stETH amount"},"functionSelector":"b0e38900","id":2633,"implemented":false,"kind":"function","modifiers":[],"name":"getWstETHByStETH","nodeType":"FunctionDefinition","parameters":{"id":2629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2628,"mutability":"mutable","name":"_stETHAmount","nodeType":"VariableDeclaration","scope":2633,"src":"3010:20:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2627,"name":"uint256","nodeType":"ElementaryTypeName","src":"3010:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3009:22:31"},"returnParameters":{"id":2632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2631,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2633,"src":"3055:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2630,"name":"uint256","nodeType":"ElementaryTypeName","src":"3055:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3054:9:31"},"scope":2654,"src":"2984:80:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2634,"nodeType":"StructuredDocumentation","src":"3070:177:31","text":" @notice Get amount of stETH for a given amount of wstETH\n @param _wstETHAmount amount of wstETH\n @return Amount of stETH for a given wstETH amount"},"functionSelector":"bb2952fc","id":2641,"implemented":false,"kind":"function","modifiers":[],"name":"getStETHByWstETH","nodeType":"FunctionDefinition","parameters":{"id":2637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2636,"mutability":"mutable","name":"_wstETHAmount","nodeType":"VariableDeclaration","scope":2641,"src":"3278:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2635,"name":"uint256","nodeType":"ElementaryTypeName","src":"3278:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3277:23:31"},"returnParameters":{"id":2640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2639,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2641,"src":"3324:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2638,"name":"uint256","nodeType":"ElementaryTypeName","src":"3324:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3323:9:31"},"scope":2654,"src":"3252:81:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2642,"nodeType":"StructuredDocumentation","src":"3339:107:31","text":" @notice Get amount of wstETH for a one stETH\n @return Amount of stETH for 1 wstETH"},"functionSelector":"035faf82","id":2647,"implemented":false,"kind":"function","modifiers":[],"name":"stEthPerToken","nodeType":"FunctionDefinition","parameters":{"id":2643,"nodeType":"ParameterList","parameters":[],"src":"3473:2:31"},"returnParameters":{"id":2646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2645,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2647,"src":"3499:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2644,"name":"uint256","nodeType":"ElementaryTypeName","src":"3499:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3498:9:31"},"scope":2654,"src":"3451:57:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2648,"nodeType":"StructuredDocumentation","src":"3514:109:31","text":" @notice Get amount of stETH for a one wstETH\n @return Amount of wstETH for a 1 stETH"},"functionSelector":"9576a0c8","id":2653,"implemented":false,"kind":"function","modifiers":[],"name":"tokensPerStEth","nodeType":"FunctionDefinition","parameters":{"id":2649,"nodeType":"ParameterList","parameters":[],"src":"3651:2:31"},"returnParameters":{"id":2652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2651,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2653,"src":"3677:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2650,"name":"uint256","nodeType":"ElementaryTypeName","src":"3677:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3676:9:31"},"scope":2654,"src":"3628:58:31","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2655,"src":"1774:1914:31"}],"src":"688:3001:31"},"id":31},"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","exportedSymbols":{"IAsset":[2658]},"id":2659,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2656,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:32"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2657,"nodeType":"StructuredDocumentation","src":"713:309:32","text":" @dev This is an empty interface used to represent either ERC20-conforming token contracts or ETH (using the zero\n address sentinel value). We're just relying on the fact that `interface` can be used to declare new address-like\n types.\n This concept is unrelated to a Pool's Asset Managers."},"fullyImplemented":true,"id":2658,"linearizedBaseContracts":[2658],"name":"IAsset","nodeType":"ContractDefinition","nodes":[],"scope":2659,"src":"1023:73:32"}],"src":"688:409:32"},"id":32},"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","exportedSymbols":{"IAuthorizer":[2673]},"id":2674,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2660,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:33"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2673,"linearizedBaseContracts":[2673],"name":"IAuthorizer","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2661,"nodeType":"StructuredDocumentation","src":"741:121:33","text":" @dev Returns true if `account` can perform the action described by `actionId` in the contract `where`."},"functionSelector":"9be2a884","id":2672,"implemented":false,"kind":"function","modifiers":[],"name":"canPerform","nodeType":"FunctionDefinition","parameters":{"id":2668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2663,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":2672,"src":"896:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2662,"name":"bytes32","nodeType":"ElementaryTypeName","src":"896:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2665,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":2672,"src":"922:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"922:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2667,"mutability":"mutable","name":"where","nodeType":"VariableDeclaration","scope":2672,"src":"947:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2666,"name":"address","nodeType":"ElementaryTypeName","src":"947:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"886:80:33"},"returnParameters":{"id":2671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2670,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2672,"src":"990:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2669,"name":"bool","nodeType":"ElementaryTypeName","src":"990:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"989:6:33"},"scope":2673,"src":"867:129:33","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2674,"src":"713:285:33"}],"src":"688:311:33"},"id":33},"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol","exportedSymbols":{"IBasePool":[2797]},"id":2798,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2675,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:34"},{"id":2676,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:34"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"./IVault.sol","id":2677,"nodeType":"ImportDirective","scope":2798,"sourceUnit":3372,"src":"747:22:34","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol","file":"./IPoolSwapStructs.sol","id":2678,"nodeType":"ImportDirective","scope":2798,"sourceUnit":2842,"src":"770:32:34","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2680,"name":"IPoolSwapStructs","nodeType":"UserDefinedTypeName","referencedDeclaration":2841,"src":"1112:16:34","typeDescriptions":{"typeIdentifier":"t_contract$_IPoolSwapStructs_$2841","typeString":"contract IPoolSwapStructs"}},"id":2681,"nodeType":"InheritanceSpecifier","src":"1112:16:34"}],"contractDependencies":[2841],"contractKind":"interface","documentation":{"id":2679,"nodeType":"StructuredDocumentation","src":"804:284:34","text":" @dev Interface for adding and removing liquidity that all Pool contracts should implement. Note that this is not\n the complete Pool contract interface, as it is missing the swap hooks. Pool contracts should also inherit from\n either IGeneralPool or IMinimalSwapInfoPool"},"fullyImplemented":false,"id":2797,"linearizedBaseContracts":[2797,2841],"name":"IBasePool","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2682,"nodeType":"StructuredDocumentation","src":"1135:1490:34","text":" @dev Called by the Vault when a user calls `IVault.joinPool` to add liquidity to this Pool. Returns how many of\n each registered token the user should provide, as well as the amount of protocol fees the Pool owes to the Vault.\n The Vault will then take tokens from `sender` and add them to the Pool's balances, as well as collect\n the reported amount in protocol fees, which the pool should calculate based on `protocolSwapFeePercentage`.\n Protocol fees are reported and charged on join events so that the Pool is free of debt whenever new users join.\n `sender` is the account performing the join (from which tokens will be withdrawn), and `recipient` is the account\n designated to receive any benefits (typically pool shares). `balances` contains the total balances\n for each token the Pool registered in the Vault, in the same order that `IVault.getPoolTokens` would return.\n `lastChangeBlock` is the last block in which *any* of the Pool's registered tokens last changed its total\n balance.\n `userData` contains any pool-specific instructions needed to perform the calculations, such as the type of\n join (e.g., proportional given an amount of pool shares, single-asset, multi-asset, etc.)\n Contracts implementing this function should check that the caller is indeed the Vault before performing any\n state-changing operations, such as minting pool shares."},"functionSelector":"d5c096c4","id":2706,"implemented":false,"kind":"function","modifiers":[],"name":"onJoinPool","nodeType":"FunctionDefinition","parameters":{"id":2698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2684,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2706,"src":"2659:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2683,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2659:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2686,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2706,"src":"2683:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2685,"name":"address","nodeType":"ElementaryTypeName","src":"2683:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2688,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2706,"src":"2707:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2687,"name":"address","nodeType":"ElementaryTypeName","src":"2707:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2691,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":2706,"src":"2734:25:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2689,"name":"uint256","nodeType":"ElementaryTypeName","src":"2734:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2690,"nodeType":"ArrayTypeName","src":"2734:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":2706,"src":"2769:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2692,"name":"uint256","nodeType":"ElementaryTypeName","src":"2769:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"protocolSwapFeePercentage","nodeType":"VariableDeclaration","scope":2706,"src":"2802:33:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2694,"name":"uint256","nodeType":"ElementaryTypeName","src":"2802:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2706,"src":"2845:21:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2696,"name":"bytes","nodeType":"ElementaryTypeName","src":"2845:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2649:223:34"},"returnParameters":{"id":2705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2701,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":2706,"src":"2891:26:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2699,"name":"uint256","nodeType":"ElementaryTypeName","src":"2891:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2700,"nodeType":"ArrayTypeName","src":"2891:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2704,"mutability":"mutable","name":"dueProtocolFeeAmounts","nodeType":"VariableDeclaration","scope":2706,"src":"2919:38:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2702,"name":"uint256","nodeType":"ElementaryTypeName","src":"2919:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2703,"nodeType":"ArrayTypeName","src":"2919:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2890:68:34"},"scope":2797,"src":"2630:329:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2707,"nodeType":"StructuredDocumentation","src":"2965:1490:34","text":" @dev Called by the Vault when a user calls `IVault.exitPool` to remove liquidity from this Pool. Returns how many\n tokens the Vault should deduct from the Pool's balances, as well as the amount of protocol fees the Pool owes\n to the Vault. The Vault will then take tokens from the Pool's balances and send them to `recipient`,\n as well as collect the reported amount in protocol fees, which the Pool should calculate based on\n `protocolSwapFeePercentage`.\n Protocol fees are charged on exit events to guarantee that users exiting the Pool have paid their share.\n `sender` is the account performing the exit (typically the pool shareholder), and `recipient` is the account\n to which the Vault will send the proceeds. `balances` contains the total token balances for each token\n the Pool registered in the Vault, in the same order that `IVault.getPoolTokens` would return.\n `lastChangeBlock` is the last block in which *any* of the Pool's registered tokens last changed its total\n balance.\n `userData` contains any pool-specific instructions needed to perform the calculations, such as the type of\n exit (e.g., proportional given an amount of pool shares, single-asset, multi-asset, etc.)\n Contracts implementing this function should check that the caller is indeed the Vault before performing any\n state-changing operations, such as burning pool shares."},"functionSelector":"74f3b009","id":2731,"implemented":false,"kind":"function","modifiers":[],"name":"onExitPool","nodeType":"FunctionDefinition","parameters":{"id":2723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2709,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2731,"src":"4489:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2708,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4489:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2711,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2731,"src":"4513:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2710,"name":"address","nodeType":"ElementaryTypeName","src":"4513:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2713,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2731,"src":"4537:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2712,"name":"address","nodeType":"ElementaryTypeName","src":"4537:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2716,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":2731,"src":"4564:25:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2714,"name":"uint256","nodeType":"ElementaryTypeName","src":"4564:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2715,"nodeType":"ArrayTypeName","src":"4564:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2718,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":2731,"src":"4599:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2717,"name":"uint256","nodeType":"ElementaryTypeName","src":"4599:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2720,"mutability":"mutable","name":"protocolSwapFeePercentage","nodeType":"VariableDeclaration","scope":2731,"src":"4632:33:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2719,"name":"uint256","nodeType":"ElementaryTypeName","src":"4632:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2722,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2731,"src":"4675:21:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2721,"name":"bytes","nodeType":"ElementaryTypeName","src":"4675:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4479:223:34"},"returnParameters":{"id":2730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2726,"mutability":"mutable","name":"amountsOut","nodeType":"VariableDeclaration","scope":2731,"src":"4721:27:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2724,"name":"uint256","nodeType":"ElementaryTypeName","src":"4721:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2725,"nodeType":"ArrayTypeName","src":"4721:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2729,"mutability":"mutable","name":"dueProtocolFeeAmounts","nodeType":"VariableDeclaration","scope":2731,"src":"4750:38:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2727,"name":"uint256","nodeType":"ElementaryTypeName","src":"4750:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2728,"nodeType":"ArrayTypeName","src":"4750:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4720:69:34"},"scope":2797,"src":"4460:330:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2732,"nodeType":"StructuredDocumentation","src":"4796:125:34","text":" @dev Returns this Pool's ID, used when interacting with the Vault (to e.g. join the Pool or swap with it)."},"functionSelector":"38fff2d0","id":2737,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolId","nodeType":"FunctionDefinition","parameters":{"id":2733,"nodeType":"ParameterList","parameters":[],"src":"4944:2:34"},"returnParameters":{"id":2736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2735,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2737,"src":"4970:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2734,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4970:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4969:9:34"},"scope":2797,"src":"4926:53:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2738,"nodeType":"StructuredDocumentation","src":"4985:150:34","text":" @dev Returns the current swap fee percentage as a 18 decimal fixed point number, so e.g. 1e17 corresponds to a\n 10% swap fee."},"functionSelector":"55c67628","id":2743,"implemented":false,"kind":"function","modifiers":[],"name":"getSwapFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":2739,"nodeType":"ParameterList","parameters":[],"src":"5169:2:34"},"returnParameters":{"id":2742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2741,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2743,"src":"5195:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2740,"name":"uint256","nodeType":"ElementaryTypeName","src":"5195:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5194:9:34"},"scope":2797,"src":"5140:64:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2744,"nodeType":"StructuredDocumentation","src":"5210:224:34","text":" @dev Returns the scaling factors of each of the Pool's tokens. This is an implementation detail that is typically\n not relevant for outside parties, but which might be useful for some types of Pools."},"functionSelector":"1dd746ea","id":2750,"implemented":false,"kind":"function","modifiers":[],"name":"getScalingFactors","nodeType":"FunctionDefinition","parameters":{"id":2745,"nodeType":"ParameterList","parameters":[],"src":"5465:2:34"},"returnParameters":{"id":2749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2748,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2750,"src":"5491:16:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2746,"name":"uint256","nodeType":"ElementaryTypeName","src":"5491:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2747,"nodeType":"ArrayTypeName","src":"5491:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5490:18:34"},"scope":2797,"src":"5439:70:34","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"87ec6817","id":2773,"implemented":false,"kind":"function","modifiers":[],"name":"queryJoin","nodeType":"FunctionDefinition","parameters":{"id":2766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2752,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2773,"src":"5543:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2751,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5543:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2754,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2773,"src":"5567:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2753,"name":"address","nodeType":"ElementaryTypeName","src":"5567:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2756,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2773,"src":"5591:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2755,"name":"address","nodeType":"ElementaryTypeName","src":"5591:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2759,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":2773,"src":"5618:25:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2757,"name":"uint256","nodeType":"ElementaryTypeName","src":"5618:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2758,"nodeType":"ArrayTypeName","src":"5618:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2761,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":2773,"src":"5653:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2760,"name":"uint256","nodeType":"ElementaryTypeName","src":"5653:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2763,"mutability":"mutable","name":"protocolSwapFeePercentage","nodeType":"VariableDeclaration","scope":2773,"src":"5686:33:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2762,"name":"uint256","nodeType":"ElementaryTypeName","src":"5686:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2765,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2773,"src":"5729:21:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2764,"name":"bytes","nodeType":"ElementaryTypeName","src":"5729:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5533:223:34"},"returnParameters":{"id":2772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2768,"mutability":"mutable","name":"bptOut","nodeType":"VariableDeclaration","scope":2773,"src":"5775:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2767,"name":"uint256","nodeType":"ElementaryTypeName","src":"5775:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2771,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":2773,"src":"5791:26:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2769,"name":"uint256","nodeType":"ElementaryTypeName","src":"5791:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2770,"nodeType":"ArrayTypeName","src":"5791:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5774:44:34"},"scope":2797,"src":"5515:304:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6028bfd4","id":2796,"implemented":false,"kind":"function","modifiers":[],"name":"queryExit","nodeType":"FunctionDefinition","parameters":{"id":2789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2775,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2796,"src":"5853:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2774,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5853:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2777,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2796,"src":"5877:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2776,"name":"address","nodeType":"ElementaryTypeName","src":"5877:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2779,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2796,"src":"5901:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2778,"name":"address","nodeType":"ElementaryTypeName","src":"5901:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2782,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":2796,"src":"5928:25:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2780,"name":"uint256","nodeType":"ElementaryTypeName","src":"5928:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2781,"nodeType":"ArrayTypeName","src":"5928:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2784,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":2796,"src":"5963:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2783,"name":"uint256","nodeType":"ElementaryTypeName","src":"5963:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2786,"mutability":"mutable","name":"protocolSwapFeePercentage","nodeType":"VariableDeclaration","scope":2796,"src":"5996:33:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2785,"name":"uint256","nodeType":"ElementaryTypeName","src":"5996:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2788,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2796,"src":"6039:21:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2787,"name":"bytes","nodeType":"ElementaryTypeName","src":"6039:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5843:223:34"},"returnParameters":{"id":2795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2791,"mutability":"mutable","name":"bptIn","nodeType":"VariableDeclaration","scope":2796,"src":"6085:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2790,"name":"uint256","nodeType":"ElementaryTypeName","src":"6085:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2794,"mutability":"mutable","name":"amountsOut","nodeType":"VariableDeclaration","scope":2796,"src":"6100:27:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2792,"name":"uint256","nodeType":"ElementaryTypeName","src":"6100:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2793,"nodeType":"ArrayTypeName","src":"6100:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6084:44:34"},"scope":2797,"src":"5825:304:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2798,"src":"1089:5042:34"}],"src":"688:5444:34"},"id":34},"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol","exportedSymbols":{"IFlashLoanRecipient":[2816]},"id":2817,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2799,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:35"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2800,"nodeType":"ImportDirective","scope":2817,"sourceUnit":1965,"src":"765:51:35","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2816,"linearizedBaseContracts":[2816],"name":"IFlashLoanRecipient","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2801,"nodeType":"StructuredDocumentation","src":"854:496:35","text":" @dev When `flashLoan` is called on the Vault, it invokes the `receiveFlashLoan` hook on the recipient.\n At the time of the call, the Vault will have transferred `amounts` for `tokens` to the recipient. Before this\n call returns, the recipient must have transferred `amounts` plus `feeAmounts` for each token back to the\n Vault, or else the entire flash loan will revert.\n `userData` is the same value passed in the `IVault.flashLoan` call."},"functionSelector":"f04f2707","id":2815,"implemented":false,"kind":"function","modifiers":[],"name":"receiveFlashLoan","nodeType":"FunctionDefinition","parameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2804,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2815,"src":"1390:22:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2802,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1390:6:35","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":2803,"nodeType":"ArrayTypeName","src":"1390:8:35","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2807,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":2815,"src":"1422:24:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2805,"name":"uint256","nodeType":"ElementaryTypeName","src":"1422:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2806,"nodeType":"ArrayTypeName","src":"1422:9:35","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2810,"mutability":"mutable","name":"feeAmounts","nodeType":"VariableDeclaration","scope":2815,"src":"1456:27:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2808,"name":"uint256","nodeType":"ElementaryTypeName","src":"1456:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2809,"nodeType":"ArrayTypeName","src":"1456:9:35","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2812,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2815,"src":"1493:21:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2811,"name":"bytes","nodeType":"ElementaryTypeName","src":"1493:5:35","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1380:140:35"},"returnParameters":{"id":2814,"nodeType":"ParameterList","parameters":[],"src":"1529:0:35"},"scope":2816,"src":"1355:175:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2817,"src":"818:714:35"}],"src":"688:845:35"},"id":35},"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol","exportedSymbols":{"IPoolSwapStructs":[2841]},"id":2842,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2818,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:36"},{"id":2819,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:36"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2820,"nodeType":"ImportDirective","scope":2842,"sourceUnit":1965,"src":"747:51:36","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"./IVault.sol","id":2821,"nodeType":"ImportDirective","scope":2842,"sourceUnit":3372,"src":"800:22:36","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":true,"id":2841,"linearizedBaseContracts":[2841],"name":"IPoolSwapStructs","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IPoolSwapStructs.SwapRequest","id":2840,"members":[{"constant":false,"id":2823,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":2840,"src":"2357:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"},"typeName":{"id":2822,"name":"IVault.SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3195,"src":"2357:15:36","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":2825,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":2840,"src":"2387:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":2824,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2387:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2827,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":2840,"src":"2411:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":2826,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2411:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2829,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2840,"src":"2436:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2828,"name":"uint256","nodeType":"ElementaryTypeName","src":"2436:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2831,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2840,"src":"2481:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2830,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2481:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2833,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":2840,"src":"2505:23:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2832,"name":"uint256","nodeType":"ElementaryTypeName","src":"2505:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2835,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":2840,"src":"2538:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2834,"name":"address","nodeType":"ElementaryTypeName","src":"2538:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2837,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2840,"src":"2560:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"2560:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2839,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2840,"src":"2580:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2838,"name":"bytes","nodeType":"ElementaryTypeName","src":"2580:5:36","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SwapRequest","nodeType":"StructDefinition","scope":2841,"src":"2328:273:36","visibility":"public"}],"scope":2842,"src":"824:1779:36"}],"src":"688:1916:36"},"id":36},"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","exportedSymbols":{"IProtocolFeesCollector":[2906]},"id":2907,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2843,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:37"},{"id":2844,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:37"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2845,"nodeType":"ImportDirective","scope":2907,"sourceUnit":1965,"src":"747:51:37","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"./IVault.sol","id":2846,"nodeType":"ImportDirective","scope":2907,"sourceUnit":3372,"src":"800:22:37","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","file":"./IAuthorizer.sol","id":2847,"nodeType":"ImportDirective","scope":2907,"sourceUnit":2674,"src":"823:27:37","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2906,"linearizedBaseContracts":[2906],"name":"IProtocolFeesCollector","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":2851,"name":"SwapFeePercentageChanged","nodeType":"EventDefinition","parameters":{"id":2850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2849,"indexed":false,"mutability":"mutable","name":"newSwapFeePercentage","nodeType":"VariableDeclaration","scope":2851,"src":"922:28:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2848,"name":"uint256","nodeType":"ElementaryTypeName","src":"922:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"921:30:37"},"src":"891:61:37"},{"anonymous":false,"id":2855,"name":"FlashLoanFeePercentageChanged","nodeType":"EventDefinition","parameters":{"id":2854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2853,"indexed":false,"mutability":"mutable","name":"newFlashLoanFeePercentage","nodeType":"VariableDeclaration","scope":2855,"src":"993:33:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2852,"name":"uint256","nodeType":"ElementaryTypeName","src":"993:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"992:35:37"},"src":"957:71:37"},{"functionSelector":"6daefab6","id":2866,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawCollectedFees","nodeType":"FunctionDefinition","parameters":{"id":2864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2858,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2866,"src":"1074:24:37","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2856,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1074:6:37","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":2857,"nodeType":"ArrayTypeName","src":"1074:8:37","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2861,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":2866,"src":"1108:26:37","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2859,"name":"uint256","nodeType":"ElementaryTypeName","src":"1108:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2860,"nodeType":"ArrayTypeName","src":"1108:9:37","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2863,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2866,"src":"1144:17:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2862,"name":"address","nodeType":"ElementaryTypeName","src":"1144:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1064:103:37"},"returnParameters":{"id":2865,"nodeType":"ParameterList","parameters":[],"src":"1176:0:37"},"scope":2906,"src":"1034:143:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"38e9922e","id":2871,"implemented":false,"kind":"function","modifiers":[],"name":"setSwapFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":2869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2868,"mutability":"mutable","name":"newSwapFeePercentage","nodeType":"VariableDeclaration","scope":2871,"src":"1213:28:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2867,"name":"uint256","nodeType":"ElementaryTypeName","src":"1213:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1212:30:37"},"returnParameters":{"id":2870,"nodeType":"ParameterList","parameters":[],"src":"1251:0:37"},"scope":2906,"src":"1183:69:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6b6b9f69","id":2876,"implemented":false,"kind":"function","modifiers":[],"name":"setFlashLoanFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":2874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2873,"mutability":"mutable","name":"newFlashLoanFeePercentage","nodeType":"VariableDeclaration","scope":2876,"src":"1293:33:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2872,"name":"uint256","nodeType":"ElementaryTypeName","src":"1293:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1292:35:37"},"returnParameters":{"id":2875,"nodeType":"ParameterList","parameters":[],"src":"1336:0:37"},"scope":2906,"src":"1258:79:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"55c67628","id":2881,"implemented":false,"kind":"function","modifiers":[],"name":"getSwapFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":2877,"nodeType":"ParameterList","parameters":[],"src":"1372:2:37"},"returnParameters":{"id":2880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2879,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2881,"src":"1398:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2878,"name":"uint256","nodeType":"ElementaryTypeName","src":"1398:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1397:9:37"},"scope":2906,"src":"1343:64:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d877845c","id":2886,"implemented":false,"kind":"function","modifiers":[],"name":"getFlashLoanFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":2882,"nodeType":"ParameterList","parameters":[],"src":"1447:2:37"},"returnParameters":{"id":2885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2884,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2886,"src":"1473:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2883,"name":"uint256","nodeType":"ElementaryTypeName","src":"1473:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1472:9:37"},"scope":2906,"src":"1413:69:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e42abf35","id":2895,"implemented":false,"kind":"function","modifiers":[],"name":"getCollectedFeeAmounts","nodeType":"FunctionDefinition","parameters":{"id":2890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2889,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2895,"src":"1520:22:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2887,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1520:6:37","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":2888,"nodeType":"ArrayTypeName","src":"1520:8:37","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1519:24:37"},"returnParameters":{"id":2894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2893,"mutability":"mutable","name":"feeAmounts","nodeType":"VariableDeclaration","scope":2895,"src":"1567:27:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2891,"name":"uint256","nodeType":"ElementaryTypeName","src":"1567:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2892,"nodeType":"ArrayTypeName","src":"1567:9:37","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1566:29:37"},"scope":2906,"src":"1488:108:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"aaabadc5","id":2900,"implemented":false,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":2896,"nodeType":"ParameterList","parameters":[],"src":"1624:2:37"},"returnParameters":{"id":2899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2898,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2900,"src":"1650:11:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2673","typeString":"contract IAuthorizer"},"typeName":{"id":2897,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2673,"src":"1650:11:37","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2673","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"1649:13:37"},"scope":2906,"src":"1602:61:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"fbfa77cf","id":2905,"implemented":false,"kind":"function","modifiers":[],"name":"vault","nodeType":"FunctionDefinition","parameters":{"id":2901,"nodeType":"ParameterList","parameters":[],"src":"1683:2:37"},"returnParameters":{"id":2904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2903,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2905,"src":"1709:6:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":2902,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"1709:6:37","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1708:8:37"},"scope":2906,"src":"1669:48:37","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2907,"src":"852:867:37"}],"src":"688:1032:37"},"id":37},"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","exportedSymbols":{"IVault":[3371]},"id":3372,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2908,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"688:33:38"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2909,"nodeType":"ImportDirective","scope":3372,"sourceUnit":1965,"src":"723:51:38","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":2910,"nodeType":"ImportDirective","scope":3372,"sourceUnit":1755,"src":"775:55:38","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","file":"../solidity-utils/helpers/ISignaturesValidator.sol","id":2911,"nodeType":"ImportDirective","scope":3372,"sourceUnit":1773,"src":"831:60:38","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol","file":"../solidity-utils/helpers/ITemporarilyPausable.sol","id":2912,"nodeType":"ImportDirective","scope":3372,"sourceUnit":1792,"src":"892:60:38","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"../solidity-utils/misc/IWETH.sol","id":2913,"nodeType":"ImportDirective","scope":3372,"sourceUnit":1887,"src":"953:42:38","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","file":"./IAsset.sol","id":2914,"nodeType":"ImportDirective","scope":3372,"sourceUnit":2659,"src":"997:22:38","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","file":"./IAuthorizer.sol","id":2915,"nodeType":"ImportDirective","scope":3372,"sourceUnit":2674,"src":"1020:27:38","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol","file":"./IFlashLoanRecipient.sol","id":2916,"nodeType":"ImportDirective","scope":3372,"sourceUnit":2817,"src":"1048:35:38","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","file":"./IProtocolFeesCollector.sol","id":2917,"nodeType":"ImportDirective","scope":3372,"sourceUnit":2907,"src":"1084:38:38","symbolAliases":[],"unitAlias":""},{"id":2918,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"1124:23:38"},{"abstract":false,"baseContracts":[{"baseName":{"id":2920,"name":"ISignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":1772,"src":"1341:20:38","typeDescriptions":{"typeIdentifier":"t_contract$_ISignaturesValidator_$1772","typeString":"contract ISignaturesValidator"}},"id":2921,"nodeType":"InheritanceSpecifier","src":"1341:20:38"},{"baseName":{"id":2922,"name":"ITemporarilyPausable","nodeType":"UserDefinedTypeName","referencedDeclaration":1791,"src":"1363:20:38","typeDescriptions":{"typeIdentifier":"t_contract$_ITemporarilyPausable_$1791","typeString":"contract ITemporarilyPausable"}},"id":2923,"nodeType":"InheritanceSpecifier","src":"1363:20:38"},{"baseName":{"id":2924,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":1754,"src":"1385:15:38","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$1754","typeString":"contract IAuthentication"}},"id":2925,"nodeType":"InheritanceSpecifier","src":"1385:15:38"}],"contractDependencies":[1754,1772,1791],"contractKind":"interface","documentation":{"id":2919,"nodeType":"StructuredDocumentation","src":"1149:171:38","text":" @dev Full external interface for the Vault core contract - no external or public methods exist in the contract that\n don't override one of these declarations."},"fullyImplemented":false,"id":3371,"linearizedBaseContracts":[3371,1754,1791,1772],"name":"IVault","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2926,"nodeType":"StructuredDocumentation","src":"2898:55:38","text":" @dev Returns the Vault's Authorizer."},"functionSelector":"aaabadc5","id":2931,"implemented":false,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":2927,"nodeType":"ParameterList","parameters":[],"src":"2980:2:38"},"returnParameters":{"id":2930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2929,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2931,"src":"3006:11:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2673","typeString":"contract IAuthorizer"},"typeName":{"id":2928,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2673,"src":"3006:11:38","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2673","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"3005:13:38"},"scope":3371,"src":"2958:61:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2932,"nodeType":"StructuredDocumentation","src":"3025:175:38","text":" @dev Sets a new Authorizer for the Vault. The caller must be allowed by the current Authorizer to do this.\n Emits an `AuthorizerChanged` event."},"functionSelector":"058a628f","id":2937,"implemented":false,"kind":"function","modifiers":[],"name":"setAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":2935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2934,"mutability":"mutable","name":"newAuthorizer","nodeType":"VariableDeclaration","scope":2937,"src":"3228:25:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2673","typeString":"contract IAuthorizer"},"typeName":{"id":2933,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2673,"src":"3228:11:38","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2673","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"3227:27:38"},"returnParameters":{"id":2936,"nodeType":"ParameterList","parameters":[],"src":"3263:0:38"},"scope":3371,"src":"3205:59:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2938,"nodeType":"StructuredDocumentation","src":"3270:80:38","text":" @dev Emitted when a new authorizer is set by `setAuthorizer`."},"id":2942,"name":"AuthorizerChanged","nodeType":"EventDefinition","parameters":{"id":2941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2940,"indexed":true,"mutability":"mutable","name":"newAuthorizer","nodeType":"VariableDeclaration","scope":2942,"src":"3379:33:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2673","typeString":"contract IAuthorizer"},"typeName":{"id":2939,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2673,"src":"3379:11:38","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2673","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"3378:35:38"},"src":"3355:59:38"},{"documentation":{"id":2943,"nodeType":"StructuredDocumentation","src":"4510:99:38","text":" @dev Returns true if `user` has approved `relayer` to act as a relayer for them."},"functionSelector":"fec90d72","id":2952,"implemented":false,"kind":"function","modifiers":[],"name":"hasApprovedRelayer","nodeType":"FunctionDefinition","parameters":{"id":2948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2945,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2952,"src":"4642:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2944,"name":"address","nodeType":"ElementaryTypeName","src":"4642:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2947,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":2952,"src":"4656:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2946,"name":"address","nodeType":"ElementaryTypeName","src":"4656:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4641:31:38"},"returnParameters":{"id":2951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2950,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2952,"src":"4696:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2949,"name":"bool","nodeType":"ElementaryTypeName","src":"4696:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4695:6:38"},"scope":3371,"src":"4614:88:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2953,"nodeType":"StructuredDocumentation","src":"4708:178:38","text":" @dev Allows `relayer` to act as a relayer for `sender` if `approved` is true, and disallows it otherwise.\n Emits a `RelayerApprovalChanged` event."},"functionSelector":"fa6e671d","id":2962,"implemented":false,"kind":"function","modifiers":[],"name":"setRelayerApproval","nodeType":"FunctionDefinition","parameters":{"id":2960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2955,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2962,"src":"4928:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2954,"name":"address","nodeType":"ElementaryTypeName","src":"4928:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2957,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":2962,"src":"4952:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2956,"name":"address","nodeType":"ElementaryTypeName","src":"4952:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2959,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":2962,"src":"4977:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2958,"name":"bool","nodeType":"ElementaryTypeName","src":"4977:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4918:78:38"},"returnParameters":{"id":2961,"nodeType":"ParameterList","parameters":[],"src":"5005:0:38"},"scope":3371,"src":"4891:115:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2963,"nodeType":"StructuredDocumentation","src":"5012:104:38","text":" @dev Emitted every time a relayer is approved or disapproved by `setRelayerApproval`."},"id":2971,"name":"RelayerApprovalChanged","nodeType":"EventDefinition","parameters":{"id":2970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2965,"indexed":true,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":2971,"src":"5150:23:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2964,"name":"address","nodeType":"ElementaryTypeName","src":"5150:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2967,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2971,"src":"5175:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2966,"name":"address","nodeType":"ElementaryTypeName","src":"5175:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2969,"indexed":false,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":2971,"src":"5199:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2968,"name":"bool","nodeType":"ElementaryTypeName","src":"5199:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5149:64:38"},"src":"5121:93:38"},{"documentation":{"id":2972,"nodeType":"StructuredDocumentation","src":"5922:78:38","text":" @dev Returns `user`'s Internal Balance for a set of tokens."},"functionSelector":"0f5a6efa","id":2983,"implemented":false,"kind":"function","modifiers":[],"name":"getInternalBalance","nodeType":"FunctionDefinition","parameters":{"id":2978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2974,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2983,"src":"6033:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2973,"name":"address","nodeType":"ElementaryTypeName","src":"6033:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2977,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2983,"src":"6047:22:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2975,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"6047:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":2976,"nodeType":"ArrayTypeName","src":"6047:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"6032:38:38"},"returnParameters":{"id":2982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2981,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2983,"src":"6094:16:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2979,"name":"uint256","nodeType":"ElementaryTypeName","src":"6094:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2980,"nodeType":"ArrayTypeName","src":"6094:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6093:18:38"},"scope":3371,"src":"6005:107:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2984,"nodeType":"StructuredDocumentation","src":"6118:416:38","text":" @dev Performs a set of user balance operations, which involve Internal Balance (deposit, withdraw or transfer)\n and plain ERC20 transfers using the Vault's allowance. This last feature is particularly useful for relayers, as\n it lets integrators reuse a user's Vault allowance.\n For each operation, if the caller is not `sender`, it must be an authorized relayer for them."},"functionSelector":"0e8e3e84","id":2990,"implemented":false,"kind":"function","modifiers":[],"name":"manageUserBalance","nodeType":"FunctionDefinition","parameters":{"id":2988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2987,"mutability":"mutable","name":"ops","nodeType":"VariableDeclaration","scope":2990,"src":"6566:26:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3001_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp[]"},"typeName":{"baseType":{"id":2985,"name":"UserBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":3001,"src":"6566:13:38","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3001_storage_ptr","typeString":"struct IVault.UserBalanceOp"}},"id":2986,"nodeType":"ArrayTypeName","src":"6566:15:38","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3001_storage_$dyn_storage_ptr","typeString":"struct IVault.UserBalanceOp[]"}},"visibility":"internal"}],"src":"6565:28:38"},"returnParameters":{"id":2989,"nodeType":"ParameterList","parameters":[],"src":"6610:0:38"},"scope":3371,"src":"6539:72:38","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.UserBalanceOp","id":3001,"members":[{"constant":false,"id":2992,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":3001,"src":"6828:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_UserBalanceOpKind_$3006","typeString":"enum IVault.UserBalanceOpKind"},"typeName":{"id":2991,"name":"UserBalanceOpKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3006,"src":"6828:17:38","typeDescriptions":{"typeIdentifier":"t_enum$_UserBalanceOpKind_$3006","typeString":"enum IVault.UserBalanceOpKind"}},"visibility":"internal"},{"constant":false,"id":2994,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":3001,"src":"6860:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"},"typeName":{"id":2993,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"6860:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"visibility":"internal"},{"constant":false,"id":2996,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3001,"src":"6882:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2995,"name":"uint256","nodeType":"ElementaryTypeName","src":"6882:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2998,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3001,"src":"6906:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2997,"name":"address","nodeType":"ElementaryTypeName","src":"6906:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3000,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3001,"src":"6930:25:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":2999,"name":"address","nodeType":"ElementaryTypeName","src":"6930:15:38","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"name":"UserBalanceOp","nodeType":"StructDefinition","scope":3371,"src":"6797:165:38","visibility":"public"},{"canonicalName":"IVault.UserBalanceOpKind","id":3006,"members":[{"id":3002,"name":"DEPOSIT_INTERNAL","nodeType":"EnumValue","src":"8600:16:38"},{"id":3003,"name":"WITHDRAW_INTERNAL","nodeType":"EnumValue","src":"8618:17:38"},{"id":3004,"name":"TRANSFER_INTERNAL","nodeType":"EnumValue","src":"8637:17:38"},{"id":3005,"name":"TRANSFER_EXTERNAL","nodeType":"EnumValue","src":"8656:17:38"}],"name":"UserBalanceOpKind","nodeType":"EnumDefinition","src":"8575:100:38"},{"anonymous":false,"documentation":{"id":3007,"nodeType":"StructuredDocumentation","src":"8681:317:38","text":" @dev Emitted when a user's Internal Balance changes, either from calls to `manageUserBalance`, or through\n interacting with Pools using Internal Balance.\n Because Internal Balance works exclusively with ERC20 tokens, ETH deposits and withdrawals will use the WETH\n address."},"id":3015,"name":"InternalBalanceChanged","nodeType":"EventDefinition","parameters":{"id":3014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3009,"indexed":true,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3015,"src":"9032:20:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3008,"name":"address","nodeType":"ElementaryTypeName","src":"9032:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3011,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3015,"src":"9054:20:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":3010,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"9054:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3013,"indexed":false,"mutability":"mutable","name":"delta","nodeType":"VariableDeclaration","scope":3015,"src":"9076:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3012,"name":"int256","nodeType":"ElementaryTypeName","src":"9076:6:38","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9031:58:38"},"src":"9003:87:38"},{"anonymous":false,"documentation":{"id":3016,"nodeType":"StructuredDocumentation","src":"9096:131:38","text":" @dev Emitted when a user's Vault ERC20 allowance is used by the Vault to transfer tokens to an external account."},"id":3026,"name":"ExternalBalanceTransfer","nodeType":"EventDefinition","parameters":{"id":3025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3018,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3026,"src":"9262:20:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":3017,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"9262:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3020,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3026,"src":"9284:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3019,"name":"address","nodeType":"ElementaryTypeName","src":"9284:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3022,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3026,"src":"9308:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3021,"name":"address","nodeType":"ElementaryTypeName","src":"9308:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3024,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3026,"src":"9327:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3023,"name":"uint256","nodeType":"ElementaryTypeName","src":"9327:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9261:81:38"},"src":"9232:111:38"},{"canonicalName":"IVault.PoolSpecialization","id":3030,"members":[{"id":3027,"name":"GENERAL","nodeType":"EnumValue","src":"10449:7:38"},{"id":3028,"name":"MINIMAL_SWAP_INFO","nodeType":"EnumValue","src":"10458:17:38"},{"id":3029,"name":"TWO_TOKEN","nodeType":"EnumValue","src":"10477:9:38"}],"name":"PoolSpecialization","nodeType":"EnumDefinition","src":"10423:65:38"},{"documentation":{"id":3031,"nodeType":"StructuredDocumentation","src":"10494:702:38","text":" @dev Registers the caller account as a Pool with a given specialization setting. Returns the Pool's ID, which\n is used in all Pool-related functions. Pools cannot be deregistered, nor can the Pool's specialization be\n changed.\n The caller is expected to be a smart contract that implements either `IGeneralPool` or `IMinimalSwapInfoPool`,\n depending on the chosen specialization setting. This contract is known as the Pool's contract.\n Note that the same contract may register itself as multiple Pools with unique Pool IDs, or in other words,\n multiple Pools may share the same contract.\n Emits a `PoolRegistered` event."},"functionSelector":"09b2760f","id":3038,"implemented":false,"kind":"function","modifiers":[],"name":"registerPool","nodeType":"FunctionDefinition","parameters":{"id":3034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3033,"mutability":"mutable","name":"specialization","nodeType":"VariableDeclaration","scope":3038,"src":"11223:33:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$3030","typeString":"enum IVault.PoolSpecialization"},"typeName":{"id":3032,"name":"PoolSpecialization","nodeType":"UserDefinedTypeName","referencedDeclaration":3030,"src":"11223:18:38","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$3030","typeString":"enum IVault.PoolSpecialization"}},"visibility":"internal"}],"src":"11222:35:38"},"returnParameters":{"id":3037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3036,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3038,"src":"11276:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3035,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11276:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11275:9:38"},"scope":3371,"src":"11201:84:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":3039,"nodeType":"StructuredDocumentation","src":"11291:84:38","text":" @dev Emitted when a Pool is registered by calling `registerPool`."},"id":3047,"name":"PoolRegistered","nodeType":"EventDefinition","parameters":{"id":3046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3041,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3047,"src":"11401:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3040,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11401:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3043,"indexed":true,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":3047,"src":"11425:27:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3042,"name":"address","nodeType":"ElementaryTypeName","src":"11425:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3045,"indexed":false,"mutability":"mutable","name":"specialization","nodeType":"VariableDeclaration","scope":3047,"src":"11454:33:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$3030","typeString":"enum IVault.PoolSpecialization"},"typeName":{"id":3044,"name":"PoolSpecialization","nodeType":"UserDefinedTypeName","referencedDeclaration":3030,"src":"11454:18:38","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$3030","typeString":"enum IVault.PoolSpecialization"}},"visibility":"internal"}],"src":"11400:88:38"},"src":"11380:109:38"},{"documentation":{"id":3048,"nodeType":"StructuredDocumentation","src":"11495:85:38","text":" @dev Returns a Pool's contract address and specialization setting."},"functionSelector":"f6c00927","id":3057,"implemented":false,"kind":"function","modifiers":[],"name":"getPool","nodeType":"FunctionDefinition","parameters":{"id":3051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3050,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3057,"src":"11602:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3049,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11602:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11601:16:38"},"returnParameters":{"id":3056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3053,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3057,"src":"11641:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3052,"name":"address","nodeType":"ElementaryTypeName","src":"11641:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3055,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3057,"src":"11650:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$3030","typeString":"enum IVault.PoolSpecialization"},"typeName":{"id":3054,"name":"PoolSpecialization","nodeType":"UserDefinedTypeName","referencedDeclaration":3030,"src":"11650:18:38","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$3030","typeString":"enum IVault.PoolSpecialization"}},"visibility":"internal"}],"src":"11640:29:38"},"scope":3371,"src":"11585:85:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3058,"nodeType":"StructuredDocumentation","src":"11676:1422:38","text":" @dev Registers `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n Pools can only interact with tokens they have registered. Users join a Pool by transferring registered tokens,\n exit by receiving registered tokens, and can only swap registered tokens.\n Each token can only be registered once. For Pools with the Two Token specialization, `tokens` must have a length\n of two, that is, both tokens must be registered in the same `registerTokens` call, and they must be sorted in\n ascending order.\n The `tokens` and `assetManagers` arrays must have the same length, and each entry in these indicates the Asset\n Manager for the corresponding token. Asset Managers can manage a Pool's tokens via `managePoolBalance`,\n depositing and withdrawing them directly, and can even set their balance to arbitrary amounts. They are therefore\n expected to be highly secured smart contracts with sound design principles, and the decision to register an\n Asset Manager should not be made lightly.\n Pools can choose not to assign an Asset Manager to a given token by passing in the zero address. Once an Asset\n Manager is set, it cannot be changed except by deregistering the associated token and registering again with a\n different Asset Manager.\n Emits a `TokensRegistered` event."},"functionSelector":"66a9c7d2","id":3069,"implemented":false,"kind":"function","modifiers":[],"name":"registerTokens","nodeType":"FunctionDefinition","parameters":{"id":3067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3060,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3069,"src":"13136:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3059,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13136:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3063,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3069,"src":"13160:22:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3061,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"13160:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3062,"nodeType":"ArrayTypeName","src":"13160:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3066,"mutability":"mutable","name":"assetManagers","nodeType":"VariableDeclaration","scope":3069,"src":"13192:30:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3064,"name":"address","nodeType":"ElementaryTypeName","src":"13192:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3065,"nodeType":"ArrayTypeName","src":"13192:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"13126:102:38"},"returnParameters":{"id":3068,"nodeType":"ParameterList","parameters":[],"src":"13237:0:38"},"scope":3371,"src":"13103:135:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":3070,"nodeType":"StructuredDocumentation","src":"13244:89:38","text":" @dev Emitted when a Pool registers tokens by calling `registerTokens`."},"id":3080,"name":"TokensRegistered","nodeType":"EventDefinition","parameters":{"id":3079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3072,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3080,"src":"13361:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3071,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13361:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3075,"indexed":false,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3080,"src":"13385:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3073,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"13385:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3074,"nodeType":"ArrayTypeName","src":"13385:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3078,"indexed":false,"mutability":"mutable","name":"assetManagers","nodeType":"VariableDeclaration","scope":3080,"src":"13402:23:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3076,"name":"address","nodeType":"ElementaryTypeName","src":"13402:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3077,"nodeType":"ArrayTypeName","src":"13402:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"13360:66:38"},"src":"13338:89:38"},{"documentation":{"id":3081,"nodeType":"StructuredDocumentation","src":"13433:567:38","text":" @dev Deregisters `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n Only registered tokens (via `registerTokens`) can be deregistered. Additionally, they must have zero total\n balance. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens\n must be deregistered in the same `deregisterTokens` call.\n A deregistered token can be re-registered later on, possibly with a different Asset Manager.\n Emits a `TokensDeregistered` event."},"functionSelector":"7d3aeb96","id":3089,"implemented":false,"kind":"function","modifiers":[],"name":"deregisterTokens","nodeType":"FunctionDefinition","parameters":{"id":3087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3083,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3089,"src":"14031:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3082,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14031:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3086,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3089,"src":"14047:22:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3084,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"14047:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3085,"nodeType":"ArrayTypeName","src":"14047:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"14030:40:38"},"returnParameters":{"id":3088,"nodeType":"ParameterList","parameters":[],"src":"14079:0:38"},"scope":3371,"src":"14005:75:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":3090,"nodeType":"StructuredDocumentation","src":"14086:93:38","text":" @dev Emitted when a Pool deregisters tokens by calling `deregisterTokens`."},"id":3097,"name":"TokensDeregistered","nodeType":"EventDefinition","parameters":{"id":3096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3092,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3097,"src":"14209:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3091,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14209:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3095,"indexed":false,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3097,"src":"14233:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3093,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"14233:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3094,"nodeType":"ArrayTypeName","src":"14233:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"14208:41:38"},"src":"14184:66:38"},{"documentation":{"id":3098,"nodeType":"StructuredDocumentation","src":"14256:1043:38","text":" @dev Returns detailed information for a Pool's registered token.\n `cash` is the number of tokens the Vault currently holds for the Pool. `managed` is the number of tokens\n withdrawn and held outside the Vault by the Pool's token Asset Manager. The Pool's total balance for `token`\n equals the sum of `cash` and `managed`.\n Internally, `cash` and `managed` are stored using 112 bits. No action can ever cause a Pool's token `cash`,\n `managed` or `total` balance to be greater than 2^112 - 1.\n `lastChangeBlock` is the number of the block in which `token`'s total balance was last modified (via either a\n join, exit, swap, or Asset Manager update). This value is useful to avoid so-called 'sandwich attacks', for\n example when developing price oracles. A change of zero (e.g. caused by a swap with amount zero) is considered a\n change for this purpose, and will update `lastChangeBlock`.\n `assetManager` is the Pool's token Asset Manager."},"functionSelector":"b05f8e48","id":3113,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolTokenInfo","nodeType":"FunctionDefinition","parameters":{"id":3103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3100,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3113,"src":"15330:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3099,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15330:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3102,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3113,"src":"15346:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":3101,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"15346:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"15329:30:38"},"returnParameters":{"id":3112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3105,"mutability":"mutable","name":"cash","nodeType":"VariableDeclaration","scope":3113,"src":"15420:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3104,"name":"uint256","nodeType":"ElementaryTypeName","src":"15420:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3107,"mutability":"mutable","name":"managed","nodeType":"VariableDeclaration","scope":3113,"src":"15446:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3106,"name":"uint256","nodeType":"ElementaryTypeName","src":"15446:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3109,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":3113,"src":"15475:23:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3108,"name":"uint256","nodeType":"ElementaryTypeName","src":"15475:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3111,"mutability":"mutable","name":"assetManager","nodeType":"VariableDeclaration","scope":3113,"src":"15512:20:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3110,"name":"address","nodeType":"ElementaryTypeName","src":"15512:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15406:136:38"},"scope":3371,"src":"15304:239:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3114,"nodeType":"StructuredDocumentation","src":"15549:828:38","text":" @dev Returns a Pool's registered tokens, the total balance for each, and the latest block when *any* of\n the tokens' `balances` changed.\n The order of the `tokens` array is the same order that will be used in `joinPool`, `exitPool`, as well as in all\n Pool hooks (where applicable). Calls to `registerTokens` and `deregisterTokens` may change this order.\n If a Pool only registers tokens once, and these are sorted in ascending order, they will be stored in the same\n order as passed to `registerTokens`.\n Total balances include both tokens held by the Vault and those withdrawn by the Pool's Asset Managers. These are\n the amounts used by joins, exits and swaps. For a detailed breakdown of token balances, use `getPoolTokenInfo`\n instead."},"functionSelector":"f94d4668","id":3127,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolTokens","nodeType":"FunctionDefinition","parameters":{"id":3117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3116,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3127,"src":"16405:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3115,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16405:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16404:16:38"},"returnParameters":{"id":3126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3120,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3127,"src":"16481:22:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3118,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"16481:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3119,"nodeType":"ArrayTypeName","src":"16481:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3123,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":3127,"src":"16517:25:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3121,"name":"uint256","nodeType":"ElementaryTypeName","src":"16517:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3122,"nodeType":"ArrayTypeName","src":"16517:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3125,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":3127,"src":"16556:23:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3124,"name":"uint256","nodeType":"ElementaryTypeName","src":"16556:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16467:122:38"},"scope":3371,"src":"16382:208:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3128,"nodeType":"StructuredDocumentation","src":"16596:2304:38","text":" @dev Called by users to join a Pool, which transfers tokens from `sender` into the Pool's balance. This will\n trigger custom Pool behavior, which will typically grant something in return to `recipient` - often tokenized\n Pool shares.\n If the caller is not `sender`, it must be an authorized relayer for them.\n The `assets` and `maxAmountsIn` arrays must have the same length, and each entry indicates the maximum amount\n to send for each asset. The amounts to send are decided by the Pool and not the Vault: it just enforces\n these maximums.\n If joining a Pool that holds WETH, it is possible to send ETH directly: the Vault will do the wrapping. To enable\n this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the\n WETH address. Note that it is not possible to combine ETH and WETH in the same join. Any excess ETH will be sent\n back to the caller (not the sender, which is important for relayers).\n `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n interacting with Pools that register and deregister tokens frequently. If sending ETH however, the array must be\n sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final\n `assets` array might not be sorted. Pools with no registered tokens cannot be joined.\n If `fromInternalBalance` is true, the caller's Internal Balance will be preferred: ERC20 transfers will only\n be made for the difference between the requested amount and Internal Balance (if any). Note that ETH cannot be\n withdrawn from Internal Balance: attempting to do so will trigger a revert.\n This causes the Vault to call the `IBasePool.onJoinPool` hook on the Pool's contract, where Pools implement\n their own custom logic. This typically requires additional information from the user (such as the expected number\n of Pool shares). This can be encoded in the `userData` argument, which is ignored by the Vault and passed\n directly to the Pool's contract, as is `recipient`.\n Emits a `PoolBalanceChanged` event."},"functionSelector":"b95cac28","id":3139,"implemented":false,"kind":"function","modifiers":[],"name":"joinPool","nodeType":"FunctionDefinition","parameters":{"id":3137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3130,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3139,"src":"18932:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3129,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18932:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3132,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3139,"src":"18956:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3131,"name":"address","nodeType":"ElementaryTypeName","src":"18956:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3134,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3139,"src":"18980:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3133,"name":"address","nodeType":"ElementaryTypeName","src":"18980:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3136,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":3139,"src":"19007:30:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3150_memory_ptr","typeString":"struct IVault.JoinPoolRequest"},"typeName":{"id":3135,"name":"JoinPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3150,"src":"19007:15:38","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3150_storage_ptr","typeString":"struct IVault.JoinPoolRequest"}},"visibility":"internal"}],"src":"18922:121:38"},"returnParameters":{"id":3138,"nodeType":"ParameterList","parameters":[],"src":"19060:0:38"},"scope":3371,"src":"18905:156:38","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.JoinPoolRequest","id":3150,"members":[{"constant":false,"id":3142,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":3150,"src":"19100:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_storage_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":3140,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"19100:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"id":3141,"nodeType":"ArrayTypeName","src":"19100:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":3145,"mutability":"mutable","name":"maxAmountsIn","nodeType":"VariableDeclaration","scope":3150,"src":"19125:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3143,"name":"uint256","nodeType":"ElementaryTypeName","src":"19125:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3144,"nodeType":"ArrayTypeName","src":"19125:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3147,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3150,"src":"19157:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3146,"name":"bytes","nodeType":"ElementaryTypeName","src":"19157:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3149,"mutability":"mutable","name":"fromInternalBalance","nodeType":"VariableDeclaration","scope":3150,"src":"19181:24:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3148,"name":"bool","nodeType":"ElementaryTypeName","src":"19181:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"JoinPoolRequest","nodeType":"StructDefinition","scope":3371,"src":"19067:145:38","visibility":"public"},{"documentation":{"id":3151,"nodeType":"StructuredDocumentation","src":"19218:2489:38","text":" @dev Called by users to exit a Pool, which transfers tokens from the Pool's balance to `recipient`. This will\n trigger custom Pool behavior, which will typically ask for something in return from `sender` - often tokenized\n Pool shares. The amount of tokens that can be withdrawn is limited by the Pool's `cash` balance (see\n `getPoolTokenInfo`).\n If the caller is not `sender`, it must be an authorized relayer for them.\n The `tokens` and `minAmountsOut` arrays must have the same length, and each entry in these indicates the minimum\n token amount to receive for each token contract. The amounts to send are decided by the Pool and not the Vault:\n it just enforces these minimums.\n If exiting a Pool that holds WETH, it is possible to receive ETH directly: the Vault will do the unwrapping. To\n enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead\n of the WETH address. Note that it is not possible to combine ETH and WETH in the same exit.\n `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n interacting with Pools that register and deregister tokens frequently. If receiving ETH however, the array must\n be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the\n final `assets` array might not be sorted. Pools with no registered tokens cannot be exited.\n If `toInternalBalance` is true, the tokens will be deposited to `recipient`'s Internal Balance. Otherwise,\n an ERC20 transfer will be performed. Note that ETH cannot be deposited to Internal Balance: attempting to\n do so will trigger a revert.\n `minAmountsOut` is the minimum amount of tokens the user expects to get out of the Pool, for each token in the\n `tokens` array. This array must match the Pool's registered tokens.\n This causes the Vault to call the `IBasePool.onExitPool` hook on the Pool's contract, where Pools implement\n their own custom logic. This typically requires additional information from the user (such as the expected number\n of Pool shares to return). This can be encoded in the `userData` argument, which is ignored by the Vault and\n passed directly to the Pool's contract.\n Emits a `PoolBalanceChanged` event."},"functionSelector":"8bdb3913","id":3162,"implemented":false,"kind":"function","modifiers":[],"name":"exitPool","nodeType":"FunctionDefinition","parameters":{"id":3160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3153,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3162,"src":"21739:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3152,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21739:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3155,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3162,"src":"21763:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3154,"name":"address","nodeType":"ElementaryTypeName","src":"21763:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3157,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3162,"src":"21787:25:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":3156,"name":"address","nodeType":"ElementaryTypeName","src":"21787:15:38","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":3159,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":3162,"src":"21822:30:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":3158,"name":"ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3173,"src":"21822:15:38","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"}],"src":"21729:129:38"},"returnParameters":{"id":3161,"nodeType":"ParameterList","parameters":[],"src":"21867:0:38"},"scope":3371,"src":"21712:156:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.ExitPoolRequest","id":3173,"members":[{"constant":false,"id":3165,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":3173,"src":"21907:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_storage_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":3163,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"21907:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"id":3164,"nodeType":"ArrayTypeName","src":"21907:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":3168,"mutability":"mutable","name":"minAmountsOut","nodeType":"VariableDeclaration","scope":3173,"src":"21932:23:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3166,"name":"uint256","nodeType":"ElementaryTypeName","src":"21932:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3167,"nodeType":"ArrayTypeName","src":"21932:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3170,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3173,"src":"21965:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3169,"name":"bytes","nodeType":"ElementaryTypeName","src":"21965:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3172,"mutability":"mutable","name":"toInternalBalance","nodeType":"VariableDeclaration","scope":3173,"src":"21989:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3171,"name":"bool","nodeType":"ElementaryTypeName","src":"21989:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"ExitPoolRequest","nodeType":"StructDefinition","scope":3371,"src":"21874:144:38","visibility":"public"},{"anonymous":false,"documentation":{"id":3174,"nodeType":"StructuredDocumentation","src":"22024:116:38","text":" @dev Emitted when a user joins or exits a Pool by calling `joinPool` or `exitPool`, respectively."},"id":3189,"name":"PoolBalanceChanged","nodeType":"EventDefinition","parameters":{"id":3188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3176,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3189,"src":"22179:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3175,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22179:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3178,"indexed":true,"mutability":"mutable","name":"liquidityProvider","nodeType":"VariableDeclaration","scope":3189,"src":"22211:33:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3177,"name":"address","nodeType":"ElementaryTypeName","src":"22211:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3181,"indexed":false,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3189,"src":"22254:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3179,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"22254:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3180,"nodeType":"ArrayTypeName","src":"22254:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3184,"indexed":false,"mutability":"mutable","name":"deltas","nodeType":"VariableDeclaration","scope":3189,"src":"22279:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":3182,"name":"int256","nodeType":"ElementaryTypeName","src":"22279:6:38","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3183,"nodeType":"ArrayTypeName","src":"22279:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"},{"constant":false,"id":3187,"indexed":false,"mutability":"mutable","name":"protocolFeeAmounts","nodeType":"VariableDeclaration","scope":3189,"src":"22304:28:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3185,"name":"uint256","nodeType":"ElementaryTypeName","src":"22304:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3186,"nodeType":"ArrayTypeName","src":"22304:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"22169:169:38"},"src":"22145:194:38"},{"canonicalName":"IVault.PoolBalanceChangeKind","id":3192,"members":[{"id":3190,"name":"JOIN","nodeType":"EnumValue","src":"22374:4:38"},{"id":3191,"name":"EXIT","nodeType":"EnumValue","src":"22380:4:38"}],"name":"PoolBalanceChangeKind","nodeType":"EnumDefinition","src":"22345:41:38"},{"canonicalName":"IVault.SwapKind","id":3195,"members":[{"id":3193,"name":"GIVEN_IN","nodeType":"EnumValue","src":"25987:8:38"},{"id":3194,"name":"GIVEN_OUT","nodeType":"EnumValue","src":"25997:9:38"}],"name":"SwapKind","nodeType":"EnumDefinition","src":"25971:37:38"},{"documentation":{"id":3196,"nodeType":"StructuredDocumentation","src":"26014:587:38","text":" @dev Performs a swap with a single Pool.\n If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens\n taken from the Pool, which must be greater than or equal to `limit`.\n If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens\n sent to the Pool, which must be less than or equal to `limit`.\n Internal Balance usage and the recipient are determined by the `funds` struct.\n Emits a `Swap` event."},"functionSelector":"52bbbe29","id":3209,"implemented":false,"kind":"function","modifiers":[],"name":"swap","nodeType":"FunctionDefinition","parameters":{"id":3205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3198,"mutability":"mutable","name":"singleSwap","nodeType":"VariableDeclaration","scope":3209,"src":"26629:28:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3222_memory_ptr","typeString":"struct IVault.SingleSwap"},"typeName":{"id":3197,"name":"SingleSwap","nodeType":"UserDefinedTypeName","referencedDeclaration":3222,"src":"26629:10:38","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3222_storage_ptr","typeString":"struct IVault.SingleSwap"}},"visibility":"internal"},{"constant":false,"id":3200,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":3209,"src":"26667:27:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":3199,"name":"FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3277,"src":"26667:14:38","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"},{"constant":false,"id":3202,"mutability":"mutable","name":"limit","nodeType":"VariableDeclaration","scope":3209,"src":"26704:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3201,"name":"uint256","nodeType":"ElementaryTypeName","src":"26704:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3204,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":3209,"src":"26727:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3203,"name":"uint256","nodeType":"ElementaryTypeName","src":"26727:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26619:130:38"},"returnParameters":{"id":3208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3207,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3209,"src":"26776:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3206,"name":"uint256","nodeType":"ElementaryTypeName","src":"26776:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26775:9:38"},"scope":3371,"src":"26606:179:38","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.SingleSwap","id":3222,"members":[{"constant":false,"id":3211,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3222,"src":"27369:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3210,"name":"bytes32","nodeType":"ElementaryTypeName","src":"27369:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3213,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":3222,"src":"27393:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"},"typeName":{"id":3212,"name":"SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3195,"src":"27393:8:38","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":3215,"mutability":"mutable","name":"assetIn","nodeType":"VariableDeclaration","scope":3222,"src":"27416:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"},"typeName":{"id":3214,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"27416:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"visibility":"internal"},{"constant":false,"id":3217,"mutability":"mutable","name":"assetOut","nodeType":"VariableDeclaration","scope":3222,"src":"27440:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"},"typeName":{"id":3216,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"27440:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"visibility":"internal"},{"constant":false,"id":3219,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3222,"src":"27465:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3218,"name":"uint256","nodeType":"ElementaryTypeName","src":"27465:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3221,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3222,"src":"27489:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3220,"name":"bytes","nodeType":"ElementaryTypeName","src":"27489:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SingleSwap","nodeType":"StructDefinition","scope":3371,"src":"27341:169:38","visibility":"public"},{"documentation":{"id":3223,"nodeType":"StructuredDocumentation","src":"27516:1980:38","text":" @dev Performs a series of swaps with one or multiple Pools. In each individual swap, the caller determines either\n the amount of tokens sent to or received from the Pool, depending on the `kind` value.\n Returns an array with the net Vault asset balance deltas. Positive amounts represent tokens (or ETH) sent to the\n Vault, and negative amounts represent tokens (or ETH) sent by the Vault. Each delta corresponds to the asset at\n the same index in the `assets` array.\n Swaps are executed sequentially, in the order specified by the `swaps` array. Each array element describes a\n Pool, the token to be sent to this Pool, the token to receive from it, and an amount that is either `amountIn` or\n `amountOut` depending on the swap kind.\n Multihop swaps can be executed by passing an `amount` value of zero for a swap. This will cause the amount in/out\n of the previous swap to be used as the amount in for the current one. In a 'given in' swap, 'tokenIn' must equal\n the previous swap's `tokenOut`. For a 'given out' swap, `tokenOut` must equal the previous swap's `tokenIn`.\n The `assets` array contains the addresses of all assets involved in the swaps. These are either token addresses,\n or the IAsset sentinel value for ETH (the zero address). Each entry in the `swaps` array specifies tokens in and\n out by referencing an index in `assets`. Note that Pools never interact with ETH directly: it will be wrapped to\n or unwrapped from WETH by the Vault.\n Internal Balance usage, sender, and recipient are determined by the `funds` struct. The `limits` array specifies\n the minimum or maximum amount of each token the vault is allowed to transfer.\n `batchSwap` can be used to make a single swap, like `swap` does, but doing so requires more gas than the\n equivalent `swap` call.\n Emits `Swap` events."},"functionSelector":"945bcec9","id":3244,"implemented":false,"kind":"function","modifiers":[],"name":"batchSwap","nodeType":"FunctionDefinition","parameters":{"id":3239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3225,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":3244,"src":"29529:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"},"typeName":{"id":3224,"name":"SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3195,"src":"29529:8:38","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":3228,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":3244,"src":"29552:28:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":3226,"name":"BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3255,"src":"29552:13:38","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3255_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":3227,"nodeType":"ArrayTypeName","src":"29552:15:38","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"},{"constant":false,"id":3231,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":3244,"src":"29590:22:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":3229,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"29590:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"id":3230,"nodeType":"ArrayTypeName","src":"29590:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":3233,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":3244,"src":"29622:27:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":3232,"name":"FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3277,"src":"29622:14:38","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"},{"constant":false,"id":3236,"mutability":"mutable","name":"limits","nodeType":"VariableDeclaration","scope":3244,"src":"29659:22:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":3234,"name":"int256","nodeType":"ElementaryTypeName","src":"29659:6:38","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3235,"nodeType":"ArrayTypeName","src":"29659:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"},{"constant":false,"id":3238,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":3244,"src":"29691:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3237,"name":"uint256","nodeType":"ElementaryTypeName","src":"29691:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29519:194:38"},"returnParameters":{"id":3243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3242,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3244,"src":"29740:15:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":3240,"name":"int256","nodeType":"ElementaryTypeName","src":"29740:6:38","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3241,"nodeType":"ArrayTypeName","src":"29740:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"src":"29739:17:38"},"scope":3371,"src":"29501:256:38","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.BatchSwapStep","id":3255,"members":[{"constant":false,"id":3246,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3255,"src":"30350:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3245,"name":"bytes32","nodeType":"ElementaryTypeName","src":"30350:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3248,"mutability":"mutable","name":"assetInIndex","nodeType":"VariableDeclaration","scope":3255,"src":"30374:20:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3247,"name":"uint256","nodeType":"ElementaryTypeName","src":"30374:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3250,"mutability":"mutable","name":"assetOutIndex","nodeType":"VariableDeclaration","scope":3255,"src":"30404:21:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3249,"name":"uint256","nodeType":"ElementaryTypeName","src":"30404:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3252,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3255,"src":"30435:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3251,"name":"uint256","nodeType":"ElementaryTypeName","src":"30435:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3254,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3255,"src":"30459:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3253,"name":"bytes","nodeType":"ElementaryTypeName","src":"30459:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BatchSwapStep","nodeType":"StructDefinition","scope":3371,"src":"30319:161:38","visibility":"public"},{"anonymous":false,"documentation":{"id":3256,"nodeType":"StructuredDocumentation","src":"30486:92:38","text":" @dev Emitted for each individual swap performed by `swap` or `batchSwap`."},"id":3268,"name":"Swap","nodeType":"EventDefinition","parameters":{"id":3267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3258,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3268,"src":"30603:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3257,"name":"bytes32","nodeType":"ElementaryTypeName","src":"30603:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3260,"indexed":true,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":3268,"src":"30635:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":3259,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"30635:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3262,"indexed":true,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":3268,"src":"30667:23:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":3261,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"30667:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3264,"indexed":false,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":3268,"src":"30700:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3263,"name":"uint256","nodeType":"ElementaryTypeName","src":"30700:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3266,"indexed":false,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":3268,"src":"30726:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3265,"name":"uint256","nodeType":"ElementaryTypeName","src":"30726:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30593:156:38"},"src":"30583:167:38"},{"canonicalName":"IVault.FundManagement","id":3277,"members":[{"constant":false,"id":3270,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3277,"src":"31713:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3269,"name":"address","nodeType":"ElementaryTypeName","src":"31713:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3272,"mutability":"mutable","name":"fromInternalBalance","nodeType":"VariableDeclaration","scope":3277,"src":"31737:24:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3271,"name":"bool","nodeType":"ElementaryTypeName","src":"31737:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3274,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3277,"src":"31771:25:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":3273,"name":"address","nodeType":"ElementaryTypeName","src":"31771:15:38","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":3276,"mutability":"mutable","name":"toInternalBalance","nodeType":"VariableDeclaration","scope":3277,"src":"31806:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3275,"name":"bool","nodeType":"ElementaryTypeName","src":"31806:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"FundManagement","nodeType":"StructDefinition","scope":3371,"src":"31681:154:38","visibility":"public"},{"documentation":{"id":3278,"nodeType":"StructuredDocumentation","src":"31841:1027:38","text":" @dev Simulates a call to `batchSwap`, returning an array of Vault asset deltas. Calls to `swap` cannot be\n simulated directly, but an equivalent `batchSwap` call can and will yield the exact same result.\n Each element in the array corresponds to the asset at the same index, and indicates the number of tokens (or ETH)\n the Vault would take from the sender (if positive) or send to the recipient (if negative). The arguments it\n receives are the same that an equivalent `batchSwap` call would receive.\n Unlike `batchSwap`, this function performs no checks on the sender or recipient field in the `funds` struct.\n This makes it suitable to be called by off-chain applications via eth_call without needing to hold tokens,\n approve them for the Vault, or even know a user's address.\n Note that this function is not 'view' (due to implementation details): the client code must explicitly execute\n eth_call instead of eth_sendTransaction."},"functionSelector":"f84d066e","id":3294,"implemented":false,"kind":"function","modifiers":[],"name":"queryBatchSwap","nodeType":"FunctionDefinition","parameters":{"id":3289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3280,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":3294,"src":"32906:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"},"typeName":{"id":3279,"name":"SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3195,"src":"32906:8:38","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":3283,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":3294,"src":"32929:28:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":3281,"name":"BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3255,"src":"32929:13:38","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3255_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":3282,"nodeType":"ArrayTypeName","src":"32929:15:38","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"},{"constant":false,"id":3286,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":3294,"src":"32967:22:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":3284,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"32967:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"id":3285,"nodeType":"ArrayTypeName","src":"32967:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":3288,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":3294,"src":"32999:27:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":3287,"name":"FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3277,"src":"32999:14:38","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"}],"src":"32896:136:38"},"returnParameters":{"id":3293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3292,"mutability":"mutable","name":"assetDeltas","nodeType":"VariableDeclaration","scope":3294,"src":"33051:27:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":3290,"name":"int256","nodeType":"ElementaryTypeName","src":"33051:6:38","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3291,"nodeType":"ArrayTypeName","src":"33051:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"src":"33050:29:38"},"scope":3371,"src":"32873:207:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3295,"nodeType":"StructuredDocumentation","src":"33106:604:38","text":" @dev Performs a 'flash loan', sending tokens to `recipient`, executing the `receiveFlashLoan` hook on it,\n and then reverting unless the tokens plus a proportional protocol fee have been returned.\n The `tokens` and `amounts` arrays must have the same length, and each entry in these indicates the loan amount\n for each token contract. `tokens` must be sorted in ascending order.\n The 'userData' field is ignored by the Vault, and forwarded as-is to `recipient` as part of the\n `receiveFlashLoan` call.\n Emits `FlashLoan` events."},"functionSelector":"5c38449e","id":3308,"implemented":false,"kind":"function","modifiers":[],"name":"flashLoan","nodeType":"FunctionDefinition","parameters":{"id":3306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3297,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3308,"src":"33743:29:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$2816","typeString":"contract IFlashLoanRecipient"},"typeName":{"id":3296,"name":"IFlashLoanRecipient","nodeType":"UserDefinedTypeName","referencedDeclaration":2816,"src":"33743:19:38","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$2816","typeString":"contract IFlashLoanRecipient"}},"visibility":"internal"},{"constant":false,"id":3300,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3308,"src":"33782:22:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3298,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"33782:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3299,"nodeType":"ArrayTypeName","src":"33782:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3303,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":3308,"src":"33814:24:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3301,"name":"uint256","nodeType":"ElementaryTypeName","src":"33814:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3302,"nodeType":"ArrayTypeName","src":"33814:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3305,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3308,"src":"33848:21:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3304,"name":"bytes","nodeType":"ElementaryTypeName","src":"33848:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"33733:142:38"},"returnParameters":{"id":3307,"nodeType":"ParameterList","parameters":[],"src":"33884:0:38"},"scope":3371,"src":"33715:170:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":3309,"nodeType":"StructuredDocumentation","src":"33891:88:38","text":" @dev Emitted for each individual flash loan performed by `flashLoan`."},"id":3319,"name":"FlashLoan","nodeType":"EventDefinition","parameters":{"id":3318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3311,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3319,"src":"34000:37:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$2816","typeString":"contract IFlashLoanRecipient"},"typeName":{"id":3310,"name":"IFlashLoanRecipient","nodeType":"UserDefinedTypeName","referencedDeclaration":2816,"src":"34000:19:38","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$2816","typeString":"contract IFlashLoanRecipient"}},"visibility":"internal"},{"constant":false,"id":3313,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3319,"src":"34039:20:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":3312,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"34039:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3315,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3319,"src":"34061:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3314,"name":"uint256","nodeType":"ElementaryTypeName","src":"34061:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3317,"indexed":false,"mutability":"mutable","name":"feeAmount","nodeType":"VariableDeclaration","scope":3319,"src":"34077:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3316,"name":"uint256","nodeType":"ElementaryTypeName","src":"34077:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33999:96:38"},"src":"33984:112:38"},{"documentation":{"id":3320,"nodeType":"StructuredDocumentation","src":"35092:434:38","text":" @dev Performs a set of Pool balance operations, which may be either withdrawals, deposits or updates.\n Pool Balance management features batching, which means a single contract call can be used to perform multiple\n operations of different kinds, with different Pools and tokens, at once.\n For each operation, the caller must be registered as the Asset Manager for `token` in `poolId`."},"functionSelector":"e6c46092","id":3326,"implemented":false,"kind":"function","modifiers":[],"name":"managePoolBalance","nodeType":"FunctionDefinition","parameters":{"id":3324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3323,"mutability":"mutable","name":"ops","nodeType":"VariableDeclaration","scope":3326,"src":"35558:26:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PoolBalanceOp_$3335_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.PoolBalanceOp[]"},"typeName":{"baseType":{"id":3321,"name":"PoolBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":3335,"src":"35558:13:38","typeDescriptions":{"typeIdentifier":"t_struct$_PoolBalanceOp_$3335_storage_ptr","typeString":"struct IVault.PoolBalanceOp"}},"id":3322,"nodeType":"ArrayTypeName","src":"35558:15:38","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PoolBalanceOp_$3335_storage_$dyn_storage_ptr","typeString":"struct IVault.PoolBalanceOp[]"}},"visibility":"internal"}],"src":"35557:28:38"},"returnParameters":{"id":3325,"nodeType":"ParameterList","parameters":[],"src":"35594:0:38"},"scope":3371,"src":"35531:64:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.PoolBalanceOp","id":3335,"members":[{"constant":false,"id":3328,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":3335,"src":"35632:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolBalanceOpKind_$3339","typeString":"enum IVault.PoolBalanceOpKind"},"typeName":{"id":3327,"name":"PoolBalanceOpKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3339,"src":"35632:17:38","typeDescriptions":{"typeIdentifier":"t_enum$_PoolBalanceOpKind_$3339","typeString":"enum IVault.PoolBalanceOpKind"}},"visibility":"internal"},{"constant":false,"id":3330,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3335,"src":"35664:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3329,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35664:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3332,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3335,"src":"35688:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":3331,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"35688:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3334,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3335,"src":"35710:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3333,"name":"uint256","nodeType":"ElementaryTypeName","src":"35710:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"PoolBalanceOp","nodeType":"StructDefinition","scope":3371,"src":"35601:130:38","visibility":"public"},{"canonicalName":"IVault.PoolBalanceOpKind","id":3339,"members":[{"id":3336,"name":"WITHDRAW","nodeType":"EnumValue","src":"36253:8:38"},{"id":3337,"name":"DEPOSIT","nodeType":"EnumValue","src":"36263:7:38"},{"id":3338,"name":"UPDATE","nodeType":"EnumValue","src":"36272:6:38"}],"name":"PoolBalanceOpKind","nodeType":"EnumDefinition","src":"36228:52:38"},{"anonymous":false,"documentation":{"id":3340,"nodeType":"StructuredDocumentation","src":"36286:109:38","text":" @dev Emitted when a Pool's token Asset Manager alters its balance via `managePoolBalance`."},"id":3352,"name":"PoolBalanceManaged","nodeType":"EventDefinition","parameters":{"id":3351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3342,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3352,"src":"36434:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3341,"name":"bytes32","nodeType":"ElementaryTypeName","src":"36434:7:38","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3344,"indexed":true,"mutability":"mutable","name":"assetManager","nodeType":"VariableDeclaration","scope":3352,"src":"36466:28:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3343,"name":"address","nodeType":"ElementaryTypeName","src":"36466:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3346,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3352,"src":"36504:20:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":3345,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"36504:6:38","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3348,"indexed":false,"mutability":"mutable","name":"cashDelta","nodeType":"VariableDeclaration","scope":3352,"src":"36534:16:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3347,"name":"int256","nodeType":"ElementaryTypeName","src":"36534:6:38","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3350,"indexed":false,"mutability":"mutable","name":"managedDelta","nodeType":"VariableDeclaration","scope":3352,"src":"36560:19:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3349,"name":"int256","nodeType":"ElementaryTypeName","src":"36560:6:38","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"36424:161:38"},"src":"36400:186:38"},{"documentation":{"id":3353,"nodeType":"StructuredDocumentation","src":"37463:64:38","text":" @dev Returns the current protocol fee module."},"functionSelector":"d2946c2b","id":3358,"implemented":false,"kind":"function","modifiers":[],"name":"getProtocolFeesCollector","nodeType":"FunctionDefinition","parameters":{"id":3354,"nodeType":"ParameterList","parameters":[],"src":"37565:2:38"},"returnParameters":{"id":3357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3356,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3358,"src":"37591:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":3355,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":2906,"src":"37591:22:38","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"src":"37590:24:38"},"scope":3371,"src":"37532:83:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3359,"nodeType":"StructuredDocumentation","src":"37621:635:38","text":" @dev Safety mechanism to pause most Vault operations in the event of an emergency - typically detection of an\n error in some part of the system.\n The Vault can only be paused during an initial time period, after which pausing is forever disabled.\n While the contract is paused, the following features are disabled:\n - depositing and transferring internal balance\n - transferring external balance (using the Vault's allowance)\n - swaps\n - joining Pools\n - Asset Manager interactions\n Internal Balance can still be withdrawn, and Pools exited."},"functionSelector":"16c38b3c","id":3364,"implemented":false,"kind":"function","modifiers":[],"name":"setPaused","nodeType":"FunctionDefinition","parameters":{"id":3362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3361,"mutability":"mutable","name":"paused","nodeType":"VariableDeclaration","scope":3364,"src":"38280:11:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3360,"name":"bool","nodeType":"ElementaryTypeName","src":"38280:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38279:13:38"},"returnParameters":{"id":3363,"nodeType":"ParameterList","parameters":[],"src":"38301:0:38"},"scope":3371,"src":"38261:41:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3365,"nodeType":"StructuredDocumentation","src":"38308:58:38","text":" @dev Returns the Vault's WETH instance."},"functionSelector":"ad5c4648","id":3370,"implemented":false,"kind":"function","modifiers":[],"name":"WETH","nodeType":"FunctionDefinition","parameters":{"id":3366,"nodeType":"ParameterList","parameters":[],"src":"38384:2:38"},"returnParameters":{"id":3369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3368,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3370,"src":"38410:5:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1886","typeString":"contract IWETH"},"typeName":{"id":3367,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":1886,"src":"38410:5:38","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1886","typeString":"contract IWETH"}},"visibility":"internal"}],"src":"38409:7:38"},"scope":3371,"src":"38371:46:38","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3372,"src":"1321:37155:38"}],"src":"688:37789:38"},"id":38},"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","exportedSymbols":{"Authentication":[3448]},"id":3449,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3373,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:39"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":3374,"nodeType":"ImportDirective","scope":3449,"sourceUnit":1744,"src":"713:90:39","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","id":3375,"nodeType":"ImportDirective","scope":3449,"sourceUnit":1755,"src":"804:91:39","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3377,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":1754,"src":"1327:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$1754","typeString":"contract IAuthentication"}},"id":3378,"nodeType":"InheritanceSpecifier","src":"1327:15:39"}],"contractDependencies":[1754],"contractKind":"contract","documentation":{"id":3376,"nodeType":"StructuredDocumentation","src":"897:393:39","text":" @dev Building block for performing access control on external functions.\n This contract is used via the `authenticate` modifier (or the `_authenticateCaller` function), which can be applied\n to external functions to only make them callable by authorized accounts.\n Derived contracts must implement the `_canPerform` function, which holds the actual access control logic."},"fullyImplemented":false,"id":3448,"linearizedBaseContracts":[3448,1754],"name":"Authentication","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3380,"mutability":"immutable","name":"_actionIdDisambiguator","nodeType":"VariableDeclaration","scope":3448,"src":"1349:48:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3379,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1349:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":3390,"nodeType":"Block","src":"2039:63:39","statements":[{"expression":{"id":3388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3386,"name":"_actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3380,"src":"2049:22:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3387,"name":"actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3383,"src":"2074:21:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2049:46:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3389,"nodeType":"ExpressionStatement","src":"2049:46:39"}]},"documentation":{"id":3381,"nodeType":"StructuredDocumentation","src":"1404:587:39","text":" @dev The main purpose of the `actionIdDisambiguator` is to prevent accidental function selector collisions in\n multi contract systems.\n There are two main uses for it:\n - if the contract is a singleton, any unique identifier can be used to make the associated action identifiers\n unique. The contract's own address is a good option.\n - if the contract belongs to a family that shares action identifiers for the same functions, an identifier\n shared by the entire family (and no other contract) should be used instead."},"id":3391,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":3384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3383,"mutability":"mutable","name":"actionIdDisambiguator","nodeType":"VariableDeclaration","scope":3391,"src":"2008:29:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3382,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2008:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2007:31:39"},"returnParameters":{"id":3385,"nodeType":"ParameterList","parameters":[],"src":"2039:0:39"},"scope":3448,"src":"1996:106:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3398,"nodeType":"Block","src":"2266:49:39","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3394,"name":"_authenticateCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3421,"src":"2276:19:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":3395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2276:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3396,"nodeType":"ExpressionStatement","src":"2276:21:39"},{"id":3397,"nodeType":"PlaceholderStatement","src":"2307:1:39"}]},"documentation":{"id":3392,"nodeType":"StructuredDocumentation","src":"2108:129:39","text":" @dev Reverts unless the caller is allowed to call this function. Should only be applied to external functions."},"id":3399,"name":"authenticate","nodeType":"ModifierDefinition","parameters":{"id":3393,"nodeType":"ParameterList","parameters":[],"src":"2263:2:39"},"src":"2242:73:39","virtual":false,"visibility":"internal"},{"body":{"id":3420,"nodeType":"Block","src":"2465:136:39","statements":[{"assignments":[3404],"declarations":[{"constant":false,"id":3404,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":3420,"src":"2475:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3403,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2475:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3409,"initialValue":{"arguments":[{"expression":{"id":3406,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2506:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sig","nodeType":"MemberAccess","src":"2506:7:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":3405,"name":"getActionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3438,"src":"2494:11:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bytes32_$","typeString":"function (bytes4) view returns (bytes32)"}},"id":3408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2494:20:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2475:39:39"},{"expression":{"arguments":[{"arguments":[{"id":3412,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3404,"src":"2545:8:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3413,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2555:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2555:10:39","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":3411,"name":"_canPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3447,"src":"2533:11:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":3415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2533:33:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3416,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"2568:6:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":3417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SENDER_NOT_ALLOWED","nodeType":"MemberAccess","referencedDeclaration":1511,"src":"2568:25:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3410,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"2524:8:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2524:70:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3419,"nodeType":"ExpressionStatement","src":"2524:70:39"}]},"documentation":{"id":3400,"nodeType":"StructuredDocumentation","src":"2321:94:39","text":" @dev Reverts unless the caller is allowed to call the entry point function."},"id":3421,"implemented":true,"kind":"function","modifiers":[],"name":"_authenticateCaller","nodeType":"FunctionDefinition","parameters":{"id":3401,"nodeType":"ParameterList","parameters":[],"src":"2448:2:39"},"returnParameters":{"id":3402,"nodeType":"ParameterList","parameters":[],"src":"2465:0:39"},"scope":3448,"src":"2420:181:39","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[1753],"body":{"id":3437,"nodeType":"Block","src":"2684:353:39","statements":[{"expression":{"arguments":[{"arguments":[{"id":3432,"name":"_actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3380,"src":"2996:22:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3433,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3423,"src":"3020:8:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":3430,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2979:3:39","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2979:16:39","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2979:50:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3429,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2969:9:39","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2969:61:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3428,"id":3436,"nodeType":"Return","src":"2962:68:39"}]},"functionSelector":"851c1bb3","id":3438,"implemented":true,"kind":"function","modifiers":[],"name":"getActionId","nodeType":"FunctionDefinition","overrides":{"id":3425,"nodeType":"OverrideSpecifier","overrides":[],"src":"2657:8:39"},"parameters":{"id":3424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3423,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":3438,"src":"2628:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3422,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2628:6:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2627:17:39"},"returnParameters":{"id":3428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3427,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3438,"src":"2675:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3426,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2675:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2674:9:39"},"scope":3448,"src":"2607:430:39","stateMutability":"view","virtual":false,"visibility":"public"},{"id":3447,"implemented":false,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","parameters":{"id":3443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3440,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":3447,"src":"3064:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3439,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3064:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3442,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3447,"src":"3082:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3441,"name":"address","nodeType":"ElementaryTypeName","src":"3082:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3063:32:39"},"returnParameters":{"id":3446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3445,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3447,"src":"3127:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3444,"name":"bool","nodeType":"ElementaryTypeName","src":"3127:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3126:6:39"},"scope":3448,"src":"3043:90:39","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":3449,"src":"1291:1844:39"}],"src":"688:2448:39"},"id":39},"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol","exportedSymbols":{"EOASignaturesValidator":[3628]},"id":3629,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3450,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:40"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":3451,"nodeType":"ImportDirective","scope":3629,"sourceUnit":1744,"src":"713:90:40","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","id":3452,"nodeType":"ImportDirective","scope":3629,"sourceUnit":1773,"src":"804:96:40","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol","file":"../openzeppelin/EIP712.sol","id":3453,"nodeType":"ImportDirective","scope":3629,"sourceUnit":6429,"src":"902:36:40","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3455,"name":"ISignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":1772,"src":"1045:20:40","typeDescriptions":{"typeIdentifier":"t_contract$_ISignaturesValidator_$1772","typeString":"contract ISignaturesValidator"}},"id":3456,"nodeType":"InheritanceSpecifier","src":"1045:20:40"},{"baseName":{"id":3457,"name":"EIP712","nodeType":"UserDefinedTypeName","referencedDeclaration":6428,"src":"1067:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$6428","typeString":"contract EIP712"}},"id":3458,"nodeType":"InheritanceSpecifier","src":"1067:6:40"}],"contractDependencies":[1772,6428],"contractKind":"contract","documentation":{"id":3454,"nodeType":"StructuredDocumentation","src":"940:60:40","text":" @dev Utility for signing Solidity function calls."},"fullyImplemented":false,"id":3628,"linearizedBaseContracts":[3628,6428,1772],"name":"EOASignaturesValidator","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3462,"mutability":"mutable","name":"_nextNonce","nodeType":"VariableDeclaration","scope":3628,"src":"1130:47:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":3461,"keyType":{"id":3459,"name":"address","nodeType":"ElementaryTypeName","src":"1138:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1130:27:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":3460,"name":"uint256","nodeType":"ElementaryTypeName","src":"1149:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"baseFunctions":[1763],"body":{"id":3471,"nodeType":"Block","src":"1253:44:40","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3468,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6401,"src":"1270:18:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":3469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1270:20:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3467,"id":3470,"nodeType":"Return","src":"1263:27:40"}]},"functionSelector":"ed24911d","id":3472,"implemented":true,"kind":"function","modifiers":[],"name":"getDomainSeparator","nodeType":"FunctionDefinition","overrides":{"id":3464,"nodeType":"OverrideSpecifier","overrides":[],"src":"1226:8:40"},"parameters":{"id":3463,"nodeType":"ParameterList","parameters":[],"src":"1211:2:40"},"returnParameters":{"id":3467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3466,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3472,"src":"1244:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3465,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1244:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1243:9:40"},"scope":3628,"src":"1184:113:40","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1771],"body":{"id":3484,"nodeType":"Block","src":"1381:43:40","statements":[{"expression":{"baseExpression":{"id":3480,"name":"_nextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3462,"src":"1398:10:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3482,"indexExpression":{"id":3481,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3474,"src":"1409:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1398:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3479,"id":3483,"nodeType":"Return","src":"1391:26:40"}]},"functionSelector":"90193b7c","id":3485,"implemented":true,"kind":"function","modifiers":[],"name":"getNextNonce","nodeType":"FunctionDefinition","overrides":{"id":3476,"nodeType":"OverrideSpecifier","overrides":[],"src":"1354:8:40"},"parameters":{"id":3475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3474,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3485,"src":"1325:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3473,"name":"address","nodeType":"ElementaryTypeName","src":"1325:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1324:17:40"},"returnParameters":{"id":3479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3478,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3485,"src":"1372:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3477,"name":"uint256","nodeType":"ElementaryTypeName","src":"1372:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1371:9:40"},"scope":3628,"src":"1303:121:40","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":3508,"nodeType":"Block","src":"1588:107:40","statements":[{"expression":{"arguments":[{"id":3497,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3487,"src":"1627:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3498,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3489,"src":"1636:10:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3499,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3491,"src":"1648:9:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"arguments":[{"id":3502,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1664:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3501,"name":"uint256","nodeType":"ElementaryTypeName","src":"1664:7:40","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3500,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1659:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1659:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3504,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"1659:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3505,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3493,"src":"1678:9:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3496,"name":"_ensureValidSignature","nodeType":"Identifier","overloadedDeclarations":[3509,3553],"referencedDeclaration":3553,"src":"1605:21:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,bytes32,bytes memory,uint256,uint256)"}},"id":3506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1605:83:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":3495,"id":3507,"nodeType":"Return","src":"1598:90:40"}]},"id":3509,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureValidSignature","nodeType":"FunctionDefinition","parameters":{"id":3494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3487,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3509,"src":"1470:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3486,"name":"address","nodeType":"ElementaryTypeName","src":"1470:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3489,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":3509,"src":"1495:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3488,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1495:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3491,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":3509,"src":"1523:22:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3490,"name":"bytes","nodeType":"ElementaryTypeName","src":"1523:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3493,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":3509,"src":"1555:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3492,"name":"uint256","nodeType":"ElementaryTypeName","src":"1555:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1460:118:40"},"returnParameters":{"id":3495,"nodeType":"ParameterList","parameters":[],"src":"1588:0:40"},"scope":3628,"src":"1430:265:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3552,"nodeType":"Block","src":"1885:1030:40","statements":[{"assignments":[3523],"declarations":[{"constant":false,"id":3523,"mutability":"mutable","name":"digest","nodeType":"VariableDeclaration","scope":3552,"src":"1895:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3522,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1895:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3527,"initialValue":{"arguments":[{"id":3525,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3513,"src":"1929:10:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3524,"name":"_hashTypedDataV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6420,"src":"1912:16:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":3526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1912:28:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1895:45:40"},{"expression":{"arguments":[{"arguments":[{"id":3530,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"1977:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3531,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3523,"src":"1986:6:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3532,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"1994:9:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3529,"name":"_isValidSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"1959:17:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,bytes32,bytes memory) view returns (bool)"}},"id":3533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1959:45:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3534,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3519,"src":"2006:9:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3528,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"1950:8:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1950:66:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3536,"nodeType":"ExpressionStatement","src":"1950:66:40"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3538,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3517,"src":"2496:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":3539,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2508:5:40","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"2508:15:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2496:27:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3542,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"2525:6:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":3543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"EXPIRED_SIGNATURE","nodeType":"MemberAccess","referencedDeclaration":1628,"src":"2525:24:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3537,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"2487:8:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2487:63:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3545,"nodeType":"ExpressionStatement","src":"2487:63:40"},{"expression":{"id":3550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3546,"name":"_nextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3462,"src":"2884:10:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3548,"indexExpression":{"id":3547,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"2895:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2884:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2907:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2884:24:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3551,"nodeType":"ExpressionStatement","src":"2884:24:40"}]},"id":3553,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureValidSignature","nodeType":"FunctionDefinition","parameters":{"id":3520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3511,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3553,"src":"1741:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3510,"name":"address","nodeType":"ElementaryTypeName","src":"1741:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3513,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":3553,"src":"1766:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3512,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1766:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3515,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":3553,"src":"1794:22:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3514,"name":"bytes","nodeType":"ElementaryTypeName","src":"1794:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3517,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":3553,"src":"1826:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3516,"name":"uint256","nodeType":"ElementaryTypeName","src":"1826:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3519,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":3553,"src":"1852:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3518,"name":"uint256","nodeType":"ElementaryTypeName","src":"1852:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1731:144:40"},"returnParameters":{"id":3521,"nodeType":"ParameterList","parameters":[],"src":"1885:0:40"},"scope":3628,"src":"1701:1214:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3604,"nodeType":"Block","src":"3072:725:40","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3565,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"3091:9:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3091:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3635","id":3567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3111:2:40","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"src":"3091:22:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3569,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"3115:6:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":3570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MALFORMED_SIGNATURE","nodeType":"MemberAccess","referencedDeclaration":1631,"src":"3115:26:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3564,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"3082:8:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3082:60:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3572,"nodeType":"ExpressionStatement","src":"3082:60:40"},{"assignments":[3574],"declarations":[{"constant":false,"id":3574,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":3604,"src":"3153:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3573,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3153:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3575,"nodeType":"VariableDeclarationStatement","src":"3153:9:40"},{"assignments":[3577],"declarations":[{"constant":false,"id":3577,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":3604,"src":"3172:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3576,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3172:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3578,"nodeType":"VariableDeclarationStatement","src":"3172:9:40"},{"assignments":[3580],"declarations":[{"constant":false,"id":3580,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":3604,"src":"3191:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3579,"name":"uint8","nodeType":"ElementaryTypeName","src":"3191:5:40","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3581,"nodeType":"VariableDeclarationStatement","src":"3191:7:40"},{"AST":{"nodeType":"YulBlock","src":"3387:155:40","statements":[{"nodeType":"YulAssignment","src":"3401:32:40","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"3416:9:40"},{"kind":"number","nodeType":"YulLiteral","src":"3427:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3412:3:40"},"nodeType":"YulFunctionCall","src":"3412:20:40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3406:5:40"},"nodeType":"YulFunctionCall","src":"3406:27:40"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"3401:1:40"}]},{"nodeType":"YulAssignment","src":"3446:32:40","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"3461:9:40"},{"kind":"number","nodeType":"YulLiteral","src":"3472:4:40","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3457:3:40"},"nodeType":"YulFunctionCall","src":"3457:20:40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3451:5:40"},"nodeType":"YulFunctionCall","src":"3451:27:40"},"variableNames":[{"name":"s","nodeType":"YulIdentifier","src":"3446:1:40"}]},{"nodeType":"YulAssignment","src":"3491:41:40","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3501:1:40","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"3514:9:40"},{"kind":"number","nodeType":"YulLiteral","src":"3525:4:40","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3510:3:40"},"nodeType":"YulFunctionCall","src":"3510:20:40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3504:5:40"},"nodeType":"YulFunctionCall","src":"3504:27:40"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"3496:4:40"},"nodeType":"YulFunctionCall","src":"3496:36:40"},"variableNames":[{"name":"v","nodeType":"YulIdentifier","src":"3491:1:40"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3574,"isOffset":false,"isSlot":false,"src":"3401:1:40","valueSize":1},{"declaration":3577,"isOffset":false,"isSlot":false,"src":"3446:1:40","valueSize":1},{"declaration":3559,"isOffset":false,"isSlot":false,"src":"3416:9:40","valueSize":1},{"declaration":3559,"isOffset":false,"isSlot":false,"src":"3461:9:40","valueSize":1},{"declaration":3559,"isOffset":false,"isSlot":false,"src":"3514:9:40","valueSize":1},{"declaration":3580,"isOffset":false,"isSlot":false,"src":"3491:1:40","valueSize":1}],"id":3582,"nodeType":"InlineAssembly","src":"3378:164:40"},{"assignments":[3584],"declarations":[{"constant":false,"id":3584,"mutability":"mutable","name":"recoveredAddress","nodeType":"VariableDeclaration","scope":3604,"src":"3552:24:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3583,"name":"address","nodeType":"ElementaryTypeName","src":"3552:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3591,"initialValue":{"arguments":[{"id":3586,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3557,"src":"3589:6:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3587,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3580,"src":"3597:1:40","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3588,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3574,"src":"3600:1:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3589,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3577,"src":"3603:1:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3585,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"3579:9:40","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":3590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3579:26:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3552:53:40"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3592,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3584,"src":"3728:16:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3756:1:40","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":3594,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3748:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3593,"name":"address","nodeType":"ElementaryTypeName","src":"3748:7:40","typeDescriptions":{}}},"id":3596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3748:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3728:30:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3598,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3584,"src":"3762:16:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3599,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3555,"src":"3782:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3762:27:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3728:61:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3602,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3727:63:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3563,"id":3603,"nodeType":"Return","src":"3720:70:40"}]},"id":3605,"implemented":true,"kind":"function","modifiers":[],"name":"_isValidSignature","nodeType":"FunctionDefinition","parameters":{"id":3560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3555,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3605,"src":"2957:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3554,"name":"address","nodeType":"ElementaryTypeName","src":"2957:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3557,"mutability":"mutable","name":"digest","nodeType":"VariableDeclaration","scope":3605,"src":"2982:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3556,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2982:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3559,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":3605,"src":"3006:22:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3558,"name":"bytes","nodeType":"ElementaryTypeName","src":"3006:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2947:87:40"},"returnParameters":{"id":3563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3562,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3605,"src":"3066:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3561,"name":"bool","nodeType":"ElementaryTypeName","src":"3066:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3065:6:40"},"scope":3628,"src":"2921:876:40","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3626,"nodeType":"Block","src":"3928:294:40","statements":[{"assignments":[3617],"declarations":[{"constant":false,"id":3617,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":3626,"src":"3938:22:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3616,"name":"bytes","nodeType":"ElementaryTypeName","src":"3938:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3622,"initialValue":{"arguments":[{"hexValue":"3635","id":3620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3973:2:40","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"}],"id":3619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3963:9:40","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3618,"name":"bytes","nodeType":"ElementaryTypeName","src":"3967:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3963:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3938:38:40"},{"AST":{"nodeType":"YulBlock","src":"4051:138:40","statements":[{"expression":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"4076:9:40"},{"kind":"number","nodeType":"YulLiteral","src":"4087:2:40","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4072:3:40"},"nodeType":"YulFunctionCall","src":"4072:18:40"},{"name":"r","nodeType":"YulIdentifier","src":"4092:1:40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4065:6:40"},"nodeType":"YulFunctionCall","src":"4065:29:40"},"nodeType":"YulExpressionStatement","src":"4065:29:40"},{"expression":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"4118:9:40"},{"kind":"number","nodeType":"YulLiteral","src":"4129:2:40","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4114:3:40"},"nodeType":"YulFunctionCall","src":"4114:18:40"},{"name":"s","nodeType":"YulIdentifier","src":"4134:1:40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4107:6:40"},"nodeType":"YulFunctionCall","src":"4107:29:40"},"nodeType":"YulExpressionStatement","src":"4107:29:40"},{"expression":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"4161:9:40"},{"kind":"number","nodeType":"YulLiteral","src":"4172:2:40","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4157:3:40"},"nodeType":"YulFunctionCall","src":"4157:18:40"},{"name":"v","nodeType":"YulIdentifier","src":"4177:1:40"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"4149:7:40"},"nodeType":"YulFunctionCall","src":"4149:30:40"},"nodeType":"YulExpressionStatement","src":"4149:30:40"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3609,"isOffset":false,"isSlot":false,"src":"4092:1:40","valueSize":1},{"declaration":3611,"isOffset":false,"isSlot":false,"src":"4134:1:40","valueSize":1},{"declaration":3617,"isOffset":false,"isSlot":false,"src":"4076:9:40","valueSize":1},{"declaration":3617,"isOffset":false,"isSlot":false,"src":"4118:9:40","valueSize":1},{"declaration":3617,"isOffset":false,"isSlot":false,"src":"4161:9:40","valueSize":1},{"declaration":3607,"isOffset":false,"isSlot":false,"src":"4177:1:40","valueSize":1}],"id":3623,"nodeType":"InlineAssembly","src":"4042:147:40"},{"expression":{"id":3624,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3617,"src":"4206:9:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3615,"id":3625,"nodeType":"Return","src":"4199:16:40"}]},"id":3627,"implemented":true,"kind":"function","modifiers":[],"name":"_toArraySignature","nodeType":"FunctionDefinition","parameters":{"id":3612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3607,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":3627,"src":"3839:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3606,"name":"uint8","nodeType":"ElementaryTypeName","src":"3839:5:40","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3609,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":3627,"src":"3856:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3608,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3856:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3611,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":3627,"src":"3875:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3610,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3875:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3829:61:40"},"returnParameters":{"id":3615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3614,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3627,"src":"3914:12:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3613,"name":"bytes","nodeType":"ElementaryTypeName","src":"3914:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3913:14:40"},"scope":3628,"src":"3803:419:40","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3629,"src":"1001:3223:40"}],"src":"688:3537:40"},"id":40},"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol","exportedSymbols":{"_asIAsset":[3644],"_findTokenIndex":[3832],"_getSortedTokenIndexes":[3906],"_insertSorted":[3790],"_sortTokens":[3695]},"id":3907,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3630,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:41"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":3631,"nodeType":"ImportDirective","scope":3907,"sourceUnit":1744,"src":"713:90:41","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":3632,"nodeType":"ImportDirective","scope":3907,"sourceUnit":1965,"src":"804:87:41","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","id":3633,"nodeType":"ImportDirective","scope":3907,"sourceUnit":2659,"src":"892:65:41","symbolAliases":[],"unitAlias":""},{"body":{"id":3643,"nodeType":"Block","src":"1060:101:41","statements":[{"AST":{"nodeType":"YulBlock","src":"1127:32:41","statements":[{"nodeType":"YulAssignment","src":"1137:16:41","value":{"name":"tokens","nodeType":"YulIdentifier","src":"1147:6:41"},"variableNames":[{"name":"assets","nodeType":"YulIdentifier","src":"1137:6:41"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3640,"isOffset":false,"isSlot":false,"src":"1137:6:41","valueSize":1},{"declaration":3636,"isOffset":false,"isSlot":false,"src":"1147:6:41","valueSize":1}],"id":3642,"nodeType":"InlineAssembly","src":"1118:41:41"}]},"id":3644,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_asIAsset","nodeType":"FunctionDefinition","parameters":{"id":3637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3636,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3644,"src":"998:22:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3634,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"998:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3635,"nodeType":"ArrayTypeName","src":"998:8:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"997:24:41"},"returnParameters":{"id":3641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3640,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":3644,"src":"1036:22:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":3638,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"1036:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"id":3639,"nodeType":"ArrayTypeName","src":"1036:8:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"}],"src":"1035:24:41"},"scope":3907,"src":"979:182:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3694,"nodeType":"Block","src":"1281:253:41","statements":[{"assignments":[3657,3659,3661],"declarations":[{"constant":false,"id":3657,"mutability":"mutable","name":"indexTokenA","nodeType":"VariableDeclaration","scope":3694,"src":"1288:19:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3656,"name":"uint256","nodeType":"ElementaryTypeName","src":"1288:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3659,"mutability":"mutable","name":"indexTokenB","nodeType":"VariableDeclaration","scope":3694,"src":"1309:19:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3658,"name":"uint256","nodeType":"ElementaryTypeName","src":"1309:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3661,"mutability":"mutable","name":"indexTokenC","nodeType":"VariableDeclaration","scope":3694,"src":"1330:19:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3660,"name":"uint256","nodeType":"ElementaryTypeName","src":"1330:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3667,"initialValue":{"arguments":[{"id":3663,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3646,"src":"1376:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},{"id":3664,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3648,"src":"1384:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},{"id":3665,"name":"tokenC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3650,"src":"1392:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}],"id":3662,"name":"_getSortedTokenIndexes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3906,"src":"1353:22:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IERC20_$1964_$_t_contract$_IERC20_$1964_$_t_contract$_IERC20_$1964_$returns$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (contract IERC20,contract IERC20,contract IERC20) pure returns (uint256,uint256,uint256)"}},"id":3666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1353:46:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1287:112:41"},{"expression":{"id":3674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3668,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"1405:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"33","id":3672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1427:1:41","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"id":3671,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1414:12:41","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":3669,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1418:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3670,"nodeType":"ArrayTypeName","src":"1418:8:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":3673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1414:15:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"src":"1405:24:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":3675,"nodeType":"ExpressionStatement","src":"1405:24:41"},{"expression":{"id":3680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3676,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"1435:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":3678,"indexExpression":{"id":3677,"name":"indexTokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3657,"src":"1442:11:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1435:19:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3679,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3646,"src":"1457:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"1435:28:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3681,"nodeType":"ExpressionStatement","src":"1435:28:41"},{"expression":{"id":3686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3682,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"1469:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":3684,"indexExpression":{"id":3683,"name":"indexTokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3659,"src":"1476:11:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1469:19:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3685,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3648,"src":"1491:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"1469:28:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3687,"nodeType":"ExpressionStatement","src":"1469:28:41"},{"expression":{"id":3692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3688,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"1503:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":3690,"indexExpression":{"id":3689,"name":"indexTokenC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3661,"src":"1510:11:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1503:19:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3691,"name":"tokenC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3650,"src":"1525:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"1503:28:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3693,"nodeType":"ExpressionStatement","src":"1503:28:41"}]},"id":3695,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_sortTokens","nodeType":"FunctionDefinition","parameters":{"id":3651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3646,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":3695,"src":"1189:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":3645,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1189:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3648,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":3695,"src":"1208:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":3647,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1208:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3650,"mutability":"mutable","name":"tokenC","nodeType":"VariableDeclaration","scope":3695,"src":"1227:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":3649,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1227:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1183:59:41"},"returnParameters":{"id":3655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3654,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3695,"src":"1257:22:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3652,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1257:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3653,"nodeType":"ArrayTypeName","src":"1257:8:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1256:24:41"},"scope":3907,"src":"1163:371:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3789,"nodeType":"Block","src":"1635:326:41","statements":[{"expression":{"id":3715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3706,"name":"sorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3704,"src":"1641:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3710,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"1663:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":3711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1663:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":3712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1679:1:41","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1663:17:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3709,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1650:12:41","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":3707,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1654:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3708,"nodeType":"ArrayTypeName","src":"1654:8:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":3714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1650:31:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"src":"1641:40:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":3716,"nodeType":"ExpressionStatement","src":"1641:40:41"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3717,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"1692:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":3718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1692:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1709:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1692:18:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3730,"nodeType":"IfStatement","src":"1688:81:41","trueBody":{"id":3729,"nodeType":"Block","src":"1712:57:41","statements":[{"expression":{"id":3725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3721,"name":"sorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3704,"src":"1722:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":3723,"indexExpression":{"hexValue":"30","id":3722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1729:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1722:9:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3724,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"1734:5:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"1722:17:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3726,"nodeType":"ExpressionStatement","src":"1722:17:41"},{"expression":{"id":3727,"name":"sorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3704,"src":"1756:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"functionReturnParameters":3705,"id":3728,"nodeType":"Return","src":"1749:13:41"}]}},{"assignments":[3732],"declarations":[{"constant":false,"id":3732,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":3789,"src":"1775:9:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3731,"name":"uint256","nodeType":"ElementaryTypeName","src":"1775:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3733,"nodeType":"VariableDeclarationStatement","src":"1775:9:41"},{"body":{"expression":{"id":3761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3753,"name":"sorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3704,"src":"1851:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":3755,"indexExpression":{"id":3754,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3732,"src":"1858:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1851:9:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":3756,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"1863:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":3760,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3757,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3732,"src":"1870:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1874:1:41","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1870:5:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1863:13:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"1851:25:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3762,"nodeType":"ExpressionStatement","src":"1851:25:41"},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3739,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3732,"src":"1814:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1818:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1814:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"id":3748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":3742,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"1823:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":3746,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3743,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3732,"src":"1830:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1834:1:41","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1830:5:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1823:13:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3747,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"1839:5:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"1823:21:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1814:30:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3763,"initializationExpression":{"expression":{"id":3737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3734,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3732,"src":"1795:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3735,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"1799:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":3736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1799:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1795:17:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3738,"nodeType":"ExpressionStatement","src":"1795:17:41"},"loopExpression":{"expression":{"id":3751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1846:3:41","subExpression":{"id":3750,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3732,"src":"1846:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3752,"nodeType":"ExpressionStatement","src":"1846:3:41"},"nodeType":"ForStatement","src":"1790:86:41"},{"body":{"expression":{"id":3780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3774,"name":"sorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3704,"src":"1914:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":3776,"indexExpression":{"id":3775,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"1921:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1914:9:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":3777,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"1926:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":3779,"indexExpression":{"id":3778,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"1933:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1926:9:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"1914:21:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3781,"nodeType":"ExpressionStatement","src":"1914:21:41"},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3768,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"1902:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3769,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3732,"src":"1906:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1902:5:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3782,"initializationExpression":{"assignments":[3765],"declarations":[{"constant":false,"id":3765,"mutability":"mutable","name":"j","nodeType":"VariableDeclaration","scope":3782,"src":"1887:9:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3764,"name":"uint256","nodeType":"ElementaryTypeName","src":"1887:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3767,"initialValue":{"hexValue":"30","id":3766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1899:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1887:13:41"},"loopExpression":{"expression":{"id":3772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1909:3:41","subExpression":{"id":3771,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"1909:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3773,"nodeType":"ExpressionStatement","src":"1909:3:41"},"nodeType":"ForStatement","src":"1882:53:41"},{"expression":{"id":3787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3783,"name":"sorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3704,"src":"1941:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":3785,"indexExpression":{"id":3784,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3732,"src":"1948:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1941:9:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3786,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"1953:5:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"1941:17:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3788,"nodeType":"ExpressionStatement","src":"1941:17:41"}]},"id":3790,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_insertSorted","nodeType":"FunctionDefinition","parameters":{"id":3701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3698,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3790,"src":"1559:22:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3696,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1559:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3697,"nodeType":"ArrayTypeName","src":"1559:8:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3700,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3790,"src":"1583:12:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":3699,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1583:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1558:38:41"},"returnParameters":{"id":3705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3704,"mutability":"mutable","name":"sorted","nodeType":"VariableDeclaration","scope":3790,"src":"1611:22:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3702,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1611:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3703,"nodeType":"ArrayTypeName","src":"1611:8:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1610:24:41"},"scope":3907,"src":"1536:425:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3831,"nodeType":"Block","src":"2049:405:41","statements":[{"assignments":[3801],"declarations":[{"constant":false,"id":3801,"mutability":"mutable","name":"tokensLength","nodeType":"VariableDeclaration","scope":3831,"src":"2258:20:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3800,"name":"uint256","nodeType":"ElementaryTypeName","src":"2258:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3804,"initialValue":{"expression":{"id":3802,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3793,"src":"2281:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":3803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2281:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2258:36:41"},{"body":{"id":3824,"nodeType":"Block","src":"2343:73:41","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"id":3819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":3815,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3793,"src":"2357:6:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":3817,"indexExpression":{"id":3816,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3806,"src":"2364:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2357:9:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3818,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3795,"src":"2370:5:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"2357:18:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3823,"nodeType":"IfStatement","src":"2353:57:41","trueBody":{"id":3822,"nodeType":"Block","src":"2377:33:41","statements":[{"expression":{"id":3820,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3806,"src":"2398:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3799,"id":3821,"nodeType":"Return","src":"2391:8:41"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3809,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3806,"src":"2320:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3810,"name":"tokensLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3801,"src":"2324:12:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2320:16:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3825,"initializationExpression":{"assignments":[3806],"declarations":[{"constant":false,"id":3806,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":3825,"src":"2305:9:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3805,"name":"uint256","nodeType":"ElementaryTypeName","src":"2305:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3808,"initialValue":{"hexValue":"30","id":3807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2317:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2305:13:41"},"loopExpression":{"expression":{"id":3813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2338:3:41","subExpression":{"id":3812,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3806,"src":"2338:1:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3814,"nodeType":"ExpressionStatement","src":"2338:3:41"},"nodeType":"ForStatement","src":"2300:116:41"},{"expression":{"arguments":[{"expression":{"id":3827,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"2430:6:41","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":3828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INVALID_TOKEN","nodeType":"MemberAccess","referencedDeclaration":1373,"src":"2430:20:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3826,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1242,1262],"referencedDeclaration":1242,"src":"2422:7:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":3829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2422:29:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3830,"nodeType":"ExpressionStatement","src":"2422:29:41"}]},"id":3832,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_findTokenIndex","nodeType":"FunctionDefinition","parameters":{"id":3796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3793,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3832,"src":"1988:22:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3791,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1988:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3792,"nodeType":"ArrayTypeName","src":"1988:8:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3795,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3832,"src":"2012:12:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":3794,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2012:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1987:38:41"},"returnParameters":{"id":3799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3798,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3832,"src":"2040:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3797,"name":"uint256","nodeType":"ElementaryTypeName","src":"2040:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2039:9:41"},"scope":3907,"src":"1963:491:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3905,"nodeType":"Block","src":"2662:688:41","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"id":3849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3847,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3834,"src":"2672:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3848,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"2681:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"2672:15:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3903,"nodeType":"Block","src":"3008:340:41","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"id":3879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3877,"name":"tokenC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3838,"src":"3049:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3878,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"3058:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"3049:15:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"id":3888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3886,"name":"tokenC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3838,"src":"3157:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3887,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3834,"src":"3166:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"3157:15:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3900,"nodeType":"Block","src":"3261:81:41","statements":[{"expression":{"components":[{"hexValue":"31","id":3895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3323:1:41","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"30","id":3896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3326:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"32","id":3897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3329:1:41","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":3898,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3322:9:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_1_by_1_$_t_rational_0_by_1_$_t_rational_2_by_1_$","typeString":"tuple(int_const 1,int_const 0,int_const 2)"}},"functionReturnParameters":3846,"id":3899,"nodeType":"Return","src":"3315:16:41"}]},"id":3901,"nodeType":"IfStatement","src":"3153:189:41","trueBody":{"id":3894,"nodeType":"Block","src":"3174:81:41","statements":[{"expression":{"components":[{"hexValue":"32","id":3889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3236:1:41","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},{"hexValue":"30","id":3890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3239:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"31","id":3891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3242:1:41","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"id":3892,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3235:9:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_2_by_1_$_t_rational_0_by_1_$_t_rational_1_by_1_$","typeString":"tuple(int_const 2,int_const 0,int_const 1)"}},"functionReturnParameters":3846,"id":3893,"nodeType":"Return","src":"3228:16:41"}]}},"id":3902,"nodeType":"IfStatement","src":"3045:297:41","trueBody":{"id":3885,"nodeType":"Block","src":"3066:81:41","statements":[{"expression":{"components":[{"hexValue":"32","id":3880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3128:1:41","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},{"hexValue":"31","id":3881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3131:1:41","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"30","id":3882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3134:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3883,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3127:9:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_2_by_1_$_t_rational_1_by_1_$_t_rational_0_by_1_$","typeString":"tuple(int_const 2,int_const 1,int_const 0)"}},"functionReturnParameters":3846,"id":3884,"nodeType":"Return","src":"3120:16:41"}]}}]},"id":3904,"nodeType":"IfStatement","src":"2668:680:41","trueBody":{"id":3876,"nodeType":"Block","src":"2689:313:41","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"id":3852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3850,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"2703:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3851,"name":"tokenC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3838,"src":"2712:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"2703:15:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"id":3861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3859,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3834,"src":"2811:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3860,"name":"tokenC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3838,"src":"2820:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"2811:15:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3873,"nodeType":"Block","src":"2915:81:41","statements":[{"expression":{"components":[{"hexValue":"31","id":3868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2977:1:41","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"32","id":3869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2980:1:41","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},{"hexValue":"30","id":3870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2983:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3871,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2976:9:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_1_by_1_$_t_rational_2_by_1_$_t_rational_0_by_1_$","typeString":"tuple(int_const 1,int_const 2,int_const 0)"}},"functionReturnParameters":3846,"id":3872,"nodeType":"Return","src":"2969:16:41"}]},"id":3874,"nodeType":"IfStatement","src":"2807:189:41","trueBody":{"id":3867,"nodeType":"Block","src":"2828:81:41","statements":[{"expression":{"components":[{"hexValue":"30","id":3862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2890:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"32","id":3863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2893:1:41","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},{"hexValue":"31","id":3864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2896:1:41","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"id":3865,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2889:9:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_rational_2_by_1_$_t_rational_1_by_1_$","typeString":"tuple(int_const 0,int_const 2,int_const 1)"}},"functionReturnParameters":3846,"id":3866,"nodeType":"Return","src":"2882:16:41"}]}},"id":3875,"nodeType":"IfStatement","src":"2699:297:41","trueBody":{"id":3858,"nodeType":"Block","src":"2720:81:41","statements":[{"expression":{"components":[{"hexValue":"30","id":3853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2782:1:41","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"31","id":3854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2785:1:41","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"32","id":3855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2788:1:41","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":3856,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2781:9:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_rational_1_by_1_$_t_rational_2_by_1_$","typeString":"tuple(int_const 0,int_const 1,int_const 2)"}},"functionReturnParameters":3846,"id":3857,"nodeType":"Return","src":"2774:16:41"}]}}]}}]},"id":3906,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_getSortedTokenIndexes","nodeType":"FunctionDefinition","parameters":{"id":3839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3834,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":3906,"src":"2493:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":3833,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2493:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3836,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":3906,"src":"2512:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":3835,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2512:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3838,"mutability":"mutable","name":"tokenC","nodeType":"VariableDeclaration","scope":3906,"src":"2531:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":3837,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2531:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2487:59:41"},"returnParameters":{"id":3846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3841,"mutability":"mutable","name":"indexTokenA","nodeType":"VariableDeclaration","scope":3906,"src":"2578:19:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3840,"name":"uint256","nodeType":"ElementaryTypeName","src":"2578:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3843,"mutability":"mutable","name":"indexTokenB","nodeType":"VariableDeclaration","scope":3906,"src":"2607:19:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3842,"name":"uint256","nodeType":"ElementaryTypeName","src":"2607:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3845,"mutability":"mutable","name":"indexTokenC","nodeType":"VariableDeclaration","scope":3906,"src":"2636:19:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3844,"name":"uint256","nodeType":"ElementaryTypeName","src":"2636:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2568:93:41"},"scope":3907,"src":"2456:894:41","stateMutability":"pure","virtual":false,"visibility":"internal"}],"src":"688:2663:41"},"id":41},"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","exportedSymbols":{"InputHelpers":[4018]},"id":4019,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3908,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:42"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":3909,"nodeType":"ImportDirective","scope":4019,"sourceUnit":1965,"src":"713:87:42","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":3910,"nodeType":"ImportDirective","scope":4019,"sourceUnit":1744,"src":"801:90:42","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":4018,"linearizedBaseContracts":[4018],"name":"InputHelpers","nodeType":"ContractDefinition","nodes":[{"body":{"id":3925,"nodeType":"Block","src":"988:63:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3918,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3912,"src":"1007:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3919,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3914,"src":"1012:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1007:6:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3921,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"1015:6:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":3922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INPUT_LENGTH_MISMATCH","nodeType":"MemberAccess","referencedDeclaration":1304,"src":"1015:28:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3917,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"998:8:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"998:46:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3924,"nodeType":"ExpressionStatement","src":"998:46:42"}]},"id":3926,"implemented":true,"kind":"function","modifiers":[],"name":"ensureInputLengthMatch","nodeType":"FunctionDefinition","parameters":{"id":3915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3912,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3926,"src":"952:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3911,"name":"uint256","nodeType":"ElementaryTypeName","src":"952:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3914,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3926,"src":"963:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3913,"name":"uint256","nodeType":"ElementaryTypeName","src":"963:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"951:22:42"},"returnParameters":{"id":3916,"nodeType":"ParameterList","parameters":[],"src":"988:0:42"},"scope":4018,"src":"920:131:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3947,"nodeType":"Block","src":"1166:73:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3936,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3928,"src":"1185:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3937,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3930,"src":"1190:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1185:6:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3939,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3930,"src":"1195:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3940,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3932,"src":"1200:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1195:6:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1185:16:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3943,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"1203:6:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":3944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INPUT_LENGTH_MISMATCH","nodeType":"MemberAccess","referencedDeclaration":1304,"src":"1203:28:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3935,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"1176:8:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1176:56:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3946,"nodeType":"ExpressionStatement","src":"1176:56:42"}]},"id":3948,"implemented":true,"kind":"function","modifiers":[],"name":"ensureInputLengthMatch","nodeType":"FunctionDefinition","parameters":{"id":3933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3928,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":3948,"src":"1098:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3927,"name":"uint256","nodeType":"ElementaryTypeName","src":"1098:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3930,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":3948,"src":"1117:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3929,"name":"uint256","nodeType":"ElementaryTypeName","src":"1117:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3932,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":3948,"src":"1136:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3931,"name":"uint256","nodeType":"ElementaryTypeName","src":"1136:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1088:63:42"},"returnParameters":{"id":3934,"nodeType":"ParameterList","parameters":[],"src":"1166:0:42"},"scope":4018,"src":"1057:182:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3965,"nodeType":"Block","src":"1311:208:42","statements":[{"assignments":[3958],"declarations":[{"constant":false,"id":3958,"mutability":"mutable","name":"addressArray","nodeType":"VariableDeclaration","scope":3965,"src":"1321:29:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3956,"name":"address","nodeType":"ElementaryTypeName","src":"1321:7:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3957,"nodeType":"ArrayTypeName","src":"1321:9:42","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":3959,"nodeType":"VariableDeclarationStatement","src":"1321:29:42"},{"AST":{"nodeType":"YulBlock","src":"1425:45:42","statements":[{"nodeType":"YulAssignment","src":"1439:21:42","value":{"name":"array","nodeType":"YulIdentifier","src":"1455:5:42"},"variableNames":[{"name":"addressArray","nodeType":"YulIdentifier","src":"1439:12:42"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":3958,"isOffset":false,"isSlot":false,"src":"1439:12:42","valueSize":1},{"declaration":3951,"isOffset":false,"isSlot":false,"src":"1455:5:42","valueSize":1}],"id":3960,"nodeType":"InlineAssembly","src":"1416:54:42"},{"expression":{"arguments":[{"id":3962,"name":"addressArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3958,"src":"1499:12:42","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":3961,"name":"ensureArrayIsSorted","nodeType":"Identifier","overloadedDeclarations":[3966,4017],"referencedDeclaration":4017,"src":"1479:19:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory) pure"}},"id":3963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1479:33:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3964,"nodeType":"ExpressionStatement","src":"1479:33:42"}]},"id":3966,"implemented":true,"kind":"function","modifiers":[],"name":"ensureArrayIsSorted","nodeType":"FunctionDefinition","parameters":{"id":3952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3951,"mutability":"mutable","name":"array","nodeType":"VariableDeclaration","scope":3966,"src":"1274:21:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3949,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1274:6:42","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":3950,"nodeType":"ArrayTypeName","src":"1274:8:42","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1273:23:42"},"returnParameters":{"id":3953,"nodeType":"ParameterList","parameters":[],"src":"1311:0:42"},"scope":4018,"src":"1245:274:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4016,"nodeType":"Block","src":"1592:307:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3972,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3969,"src":"1606:5:42","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1606:12:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":3974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1621:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1606:16:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3978,"nodeType":"IfStatement","src":"1602:53:42","trueBody":{"id":3977,"nodeType":"Block","src":"1624:31:42","statements":[{"functionReturnParameters":3971,"id":3976,"nodeType":"Return","src":"1638:7:42"}]}},{"assignments":[3980],"declarations":[{"constant":false,"id":3980,"mutability":"mutable","name":"previous","nodeType":"VariableDeclaration","scope":4016,"src":"1665:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3979,"name":"address","nodeType":"ElementaryTypeName","src":"1665:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3984,"initialValue":{"baseExpression":{"id":3981,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3969,"src":"1684:5:42","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3983,"indexExpression":{"hexValue":"30","id":3982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1690:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1684:8:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1665:27:42"},{"body":{"id":4014,"nodeType":"Block","src":"1745:148:42","statements":[{"assignments":[3997],"declarations":[{"constant":false,"id":3997,"mutability":"mutable","name":"current","nodeType":"VariableDeclaration","scope":4014,"src":"1759:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3996,"name":"address","nodeType":"ElementaryTypeName","src":"1759:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4001,"initialValue":{"baseExpression":{"id":3998,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3969,"src":"1777:5:42","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4000,"indexExpression":{"id":3999,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3986,"src":"1783:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1777:8:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1759:26:42"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4003,"name":"previous","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3980,"src":"1808:8:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4004,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3997,"src":"1819:7:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1808:18:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4006,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"1828:6:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":4007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNSORTED_ARRAY","nodeType":"MemberAccess","referencedDeclaration":1298,"src":"1828:21:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4002,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"1799:8:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1799:51:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4009,"nodeType":"ExpressionStatement","src":"1799:51:42"},{"expression":{"id":4012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4010,"name":"previous","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3980,"src":"1864:8:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4011,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3997,"src":"1875:7:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1864:18:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4013,"nodeType":"ExpressionStatement","src":"1864:18:42"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3989,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3986,"src":"1722:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3990,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3969,"src":"1726:5:42","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1726:12:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1722:16:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4015,"initializationExpression":{"assignments":[3986],"declarations":[{"constant":false,"id":3986,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":4015,"src":"1707:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3985,"name":"uint256","nodeType":"ElementaryTypeName","src":"1707:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3988,"initialValue":{"hexValue":"31","id":3987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1719:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"1707:13:42"},"loopExpression":{"expression":{"id":3994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1740:3:42","subExpression":{"id":3993,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3986,"src":"1742:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3995,"nodeType":"ExpressionStatement","src":"1740:3:42"},"nodeType":"ForStatement","src":"1702:191:42"}]},"id":4017,"implemented":true,"kind":"function","modifiers":[],"name":"ensureArrayIsSorted","nodeType":"FunctionDefinition","parameters":{"id":3970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3969,"mutability":"mutable","name":"array","nodeType":"VariableDeclaration","scope":4017,"src":"1554:22:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3967,"name":"address","nodeType":"ElementaryTypeName","src":"1554:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3968,"nodeType":"ArrayTypeName","src":"1554:9:42","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1553:24:42"},"returnParameters":{"id":3971,"nodeType":"ParameterList","parameters":[],"src":"1592:0:42"},"scope":4018,"src":"1525:374:42","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4019,"src":"893:1008:42"}],"src":"688:1214:42"},"id":42},"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","exportedSymbols":{"SingletonAuthentication":[4113]},"id":4114,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4020,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:43"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","id":4021,"nodeType":"ImportDirective","scope":4114,"sourceUnit":29,"src":"713:88:43","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":4022,"nodeType":"ImportDirective","scope":4114,"sourceUnit":3372,"src":"802:65:43","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","file":"./Authentication.sol","id":4023,"nodeType":"ImportDirective","scope":4114,"sourceUnit":3449,"src":"869:30:43","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4024,"name":"Authentication","nodeType":"UserDefinedTypeName","referencedDeclaration":3448,"src":"946:14:43","typeDescriptions":{"typeIdentifier":"t_contract$_Authentication_$3448","typeString":"contract Authentication"}},"id":4025,"nodeType":"InheritanceSpecifier","src":"946:14:43"}],"contractDependencies":[1754,3448],"contractKind":"contract","fullyImplemented":true,"id":4113,"linearizedBaseContracts":[4113,3448,1754],"name":"SingletonAuthentication","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":4027,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":4113,"src":"967:31:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":4026,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"967:6:43","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"private"},{"body":{"id":4048,"nodeType":"Block","src":"1152:31:43","statements":[{"expression":{"id":4046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4044,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4027,"src":"1162:6:43","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4045,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4029,"src":"1171:5:43","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"src":"1162:14:43","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":4047,"nodeType":"ExpressionStatement","src":"1162:14:43"}]},"id":4049,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":4038,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1143:4:43","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$4113","typeString":"contract SingletonAuthentication"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SingletonAuthentication_$4113","typeString":"contract SingletonAuthentication"}],"id":4037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1135:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4036,"name":"address","nodeType":"ElementaryTypeName","src":"1135:7:43","typeDescriptions":{}}},"id":4039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1135:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4035,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1127:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4034,"name":"uint256","nodeType":"ElementaryTypeName","src":"1127:7:43","typeDescriptions":{}}},"id":4040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1127:22:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1119:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4032,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1119:7:43","typeDescriptions":{}}},"id":4041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1119:31:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":4042,"modifierName":{"id":4031,"name":"Authentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3448,"src":"1104:14:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Authentication_$3448_$","typeString":"type(contract Authentication)"}},"nodeType":"ModifierInvocation","src":"1104:47:43"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":4030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4029,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":4049,"src":"1090:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":4028,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"1090:6:43","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1089:14:43"},"returnParameters":{"id":4043,"nodeType":"ParameterList","parameters":[],"src":"1152:0:43"},"scope":4113,"src":"1078:105:43","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4057,"nodeType":"Block","src":"1296:30:43","statements":[{"expression":{"id":4055,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4027,"src":"1313:6:43","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"functionReturnParameters":4054,"id":4056,"nodeType":"Return","src":"1306:13:43"}]},"documentation":{"id":4050,"nodeType":"StructuredDocumentation","src":"1189:53:43","text":" @notice Returns the Balancer Vault"},"functionSelector":"8d928af8","id":4058,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":4051,"nodeType":"ParameterList","parameters":[],"src":"1264:2:43"},"returnParameters":{"id":4054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4053,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4058,"src":"1288:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":4052,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"1288:6:43","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1287:8:43"},"scope":4113,"src":"1247:79:43","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":4069,"nodeType":"Block","src":"1445:50:43","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4064,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4058,"src":"1462:8:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3371_$","typeString":"function () view returns (contract IVault)"}},"id":4065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1462:10:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":4066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAuthorizer","nodeType":"MemberAccess","referencedDeclaration":2931,"src":"1462:24:43","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAuthorizer_$2673_$","typeString":"function () view external returns (contract IAuthorizer)"}},"id":4067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1462:26:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2673","typeString":"contract IAuthorizer"}},"functionReturnParameters":4063,"id":4068,"nodeType":"Return","src":"1455:33:43"}]},"documentation":{"id":4059,"nodeType":"StructuredDocumentation","src":"1332:49:43","text":" @notice Returns the Authorizer"},"functionSelector":"aaabadc5","id":4070,"implemented":true,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":4060,"nodeType":"ParameterList","parameters":[],"src":"1408:2:43"},"returnParameters":{"id":4063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4062,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4070,"src":"1432:11:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2673","typeString":"contract IAuthorizer"},"typeName":{"id":4061,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2673,"src":"1432:11:43","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2673","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"1431:13:43"},"scope":4113,"src":"1386:109:43","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[3447],"body":{"id":4091,"nodeType":"Block","src":"1595:84:43","statements":[{"expression":{"arguments":[{"id":4083,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4072,"src":"1639:8:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4084,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4074,"src":"1649:7:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":4087,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1666:4:43","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$4113","typeString":"contract SingletonAuthentication"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SingletonAuthentication_$4113","typeString":"contract SingletonAuthentication"}],"id":4086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1658:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4085,"name":"address","nodeType":"ElementaryTypeName","src":"1658:7:43","typeDescriptions":{}}},"id":4088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1658:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4080,"name":"getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4070,"src":"1612:13:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$2673_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":4081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1612:15:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2673","typeString":"contract IAuthorizer"}},"id":4082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":2672,"src":"1612:26:43","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":4089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1612:60:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4079,"id":4090,"nodeType":"Return","src":"1605:67:43"}]},"id":4092,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","overrides":{"id":4076,"nodeType":"OverrideSpecifier","overrides":[],"src":"1571:8:43"},"parameters":{"id":4075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4072,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":4092,"src":"1522:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4071,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1522:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4074,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":4092,"src":"1540:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4073,"name":"address","nodeType":"ElementaryTypeName","src":"1540:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1521:35:43"},"returnParameters":{"id":4079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4078,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4092,"src":"1589:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4077,"name":"bool","nodeType":"ElementaryTypeName","src":"1589:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1588:6:43"},"scope":4113,"src":"1501:178:43","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4111,"nodeType":"Block","src":"1815:76:43","statements":[{"expression":{"arguments":[{"id":4106,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4094,"src":"1859:8:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4107,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4096,"src":"1869:7:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4108,"name":"where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4098,"src":"1878:5:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4103,"name":"getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4070,"src":"1832:13:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$2673_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":4104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1832:15:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2673","typeString":"contract IAuthorizer"}},"id":4105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":2672,"src":"1832:26:43","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":4109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1832:52:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4102,"id":4110,"nodeType":"Return","src":"1825:59:43"}]},"id":4112,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","parameters":{"id":4099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4094,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":4112,"src":"1715:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4093,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1715:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4096,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":4112,"src":"1741:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4095,"name":"address","nodeType":"ElementaryTypeName","src":"1741:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4098,"mutability":"mutable","name":"where","nodeType":"VariableDeclaration","scope":4112,"src":"1766:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4097,"name":"address","nodeType":"ElementaryTypeName","src":"1766:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1705:80:43"},"returnParameters":{"id":4102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4101,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4112,"src":"1809:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4100,"name":"bool","nodeType":"ElementaryTypeName","src":"1809:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1808:6:43"},"scope":4113,"src":"1685:206:43","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":4114,"src":"901:992:43"}],"src":"688:1206:43"},"id":43},"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol","exportedSymbols":{"VaultHelpers":[4138]},"id":4139,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4115,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:44"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":4138,"linearizedBaseContracts":[4138],"name":"VaultHelpers","nodeType":"ContractDefinition","nodes":[{"body":{"id":4136,"nodeType":"Block","src":"967:241:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4127,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4118,"src":"1181:6:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4126,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1173:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4125,"name":"uint256","nodeType":"ElementaryTypeName","src":"1173:7:44","typeDescriptions":{}}},"id":4128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1173:15:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"id":4131,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3132","id":4129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1193:2:44","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"38","id":4130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1198:1:44","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1193:6:44","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"}}],"id":4132,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1192:8:44","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"}},"src":"1173:27:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1165:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4123,"name":"address","nodeType":"ElementaryTypeName","src":"1165:7:44","typeDescriptions":{}}},"id":4134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1165:36:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":4122,"id":4135,"nodeType":"Return","src":"1158:43:44"}]},"documentation":{"id":4116,"nodeType":"StructuredDocumentation","src":"740:151:44","text":" @dev Returns the address of a Pool's contract.\n This is the same code the Vault runs in `PoolRegistry._getPoolAddress`."},"id":4137,"implemented":true,"kind":"function","modifiers":[],"name":"toPoolAddress","nodeType":"FunctionDefinition","parameters":{"id":4119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4118,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":4137,"src":"919:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4117,"name":"bytes32","nodeType":"ElementaryTypeName","src":"919:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"918:16:44"},"returnParameters":{"id":4122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4121,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4137,"src":"958:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4120,"name":"address","nodeType":"ElementaryTypeName","src":"958:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"957:9:44"},"scope":4138,"src":"896:312:44","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4139,"src":"713:497:44"}],"src":"688:523:44"},"id":44},"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","exportedSymbols":{"FixedPoint":[4560]},"id":4561,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4140,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:45"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":4141,"nodeType":"ImportDirective","scope":4561,"sourceUnit":1744,"src":"713:90:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol","file":"./LogExpMath.sol","id":4142,"nodeType":"ImportDirective","scope":4561,"sourceUnit":5859,"src":"805:26:45","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":4560,"linearizedBaseContracts":[4560],"name":"FixedPoint","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":4145,"mutability":"constant","name":"ONE","nodeType":"VariableDeclaration","scope":4560,"src":"913:36:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4143,"name":"uint256","nodeType":"ElementaryTypeName","src":"913:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":4144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"945:4:45","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":true,"id":4150,"mutability":"constant","name":"TWO","nodeType":"VariableDeclaration","scope":4560,"src":"976:39:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4146,"name":"uint256","nodeType":"ElementaryTypeName","src":"976:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4149,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1008:1:45","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4148,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"1012:3:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1008:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":4155,"mutability":"constant","name":"FOUR","nodeType":"VariableDeclaration","scope":4560,"src":"1021:40:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4151,"name":"uint256","nodeType":"ElementaryTypeName","src":"1021:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4154,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"34","id":4152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1054:1:45","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4153,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"1058:3:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1054:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":4158,"mutability":"constant","name":"MAX_POW_RELATIVE_ERROR","nodeType":"VariableDeclaration","scope":4560,"src":"1067:56:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4156,"name":"uint256","nodeType":"ElementaryTypeName","src":"1067:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130303030","id":4157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1118:5:45","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"visibility":"internal"},{"constant":true,"id":4161,"mutability":"constant","name":"MIN_POW_BASE_FREE_EXPONENT","nodeType":"VariableDeclaration","scope":4560,"src":"1232:61:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4159,"name":"uint256","nodeType":"ElementaryTypeName","src":"1232:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"302e37653138","id":4160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1287:6:45","typeDescriptions":{"typeIdentifier":"t_rational_700000000000000000_by_1","typeString":"int_const 700000000000000000"},"value":"0.7e18"},"visibility":"internal"},{"body":{"id":4186,"nodeType":"Block","src":"1367:172:45","statements":[{"assignments":[4171],"declarations":[{"constant":false,"id":4171,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":4186,"src":"1450:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4170,"name":"uint256","nodeType":"ElementaryTypeName","src":"1450:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4175,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4172,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4163,"src":"1462:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4173,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4165,"src":"1466:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1462:5:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1450:17:45"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4177,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4171,"src":"1486:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4178,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4163,"src":"1491:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1486:6:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4180,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"1494:6:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":4181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1265,"src":"1494:19:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4176,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"1477:8:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1477:37:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4183,"nodeType":"ExpressionStatement","src":"1477:37:45"},{"expression":{"id":4184,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4171,"src":"1531:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4169,"id":4185,"nodeType":"Return","src":"1524:8:45"}]},"id":4187,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":4166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4163,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":4187,"src":"1313:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4162,"name":"uint256","nodeType":"ElementaryTypeName","src":"1313:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4165,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":4187,"src":"1324:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4164,"name":"uint256","nodeType":"ElementaryTypeName","src":"1324:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1312:22:45"},"returnParameters":{"id":4169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4168,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4187,"src":"1358:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4167,"name":"uint256","nodeType":"ElementaryTypeName","src":"1358:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1357:9:45"},"scope":4560,"src":"1300:239:45","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4212,"nodeType":"Block","src":"1612:172:45","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4197,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4191,"src":"1704:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4198,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4189,"src":"1709:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1704:6:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4200,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"1712:6:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":4201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1268,"src":"1712:19:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4196,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"1695:8:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1695:37:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4203,"nodeType":"ExpressionStatement","src":"1695:37:45"},{"assignments":[4205],"declarations":[{"constant":false,"id":4205,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":4212,"src":"1742:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4204,"name":"uint256","nodeType":"ElementaryTypeName","src":"1742:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4209,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4206,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4189,"src":"1754:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4207,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4191,"src":"1758:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1754:5:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1742:17:45"},{"expression":{"id":4210,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4205,"src":"1776:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4195,"id":4211,"nodeType":"Return","src":"1769:8:45"}]},"id":4213,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":4192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4189,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":4213,"src":"1558:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4188,"name":"uint256","nodeType":"ElementaryTypeName","src":"1558:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4191,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":4213,"src":"1569:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4190,"name":"uint256","nodeType":"ElementaryTypeName","src":"1569:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1557:22:45"},"returnParameters":{"id":4195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4194,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4213,"src":"1603:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4193,"name":"uint256","nodeType":"ElementaryTypeName","src":"1603:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1602:9:45"},"scope":4560,"src":"1545:239:45","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4246,"nodeType":"Block","src":"1861:138:45","statements":[{"assignments":[4223],"declarations":[{"constant":false,"id":4223,"mutability":"mutable","name":"product","nodeType":"VariableDeclaration","scope":4246,"src":"1871:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4222,"name":"uint256","nodeType":"ElementaryTypeName","src":"1871:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4227,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4224,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4215,"src":"1889:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4225,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4217,"src":"1893:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1889:5:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1871:23:45"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4229,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4215,"src":"1913:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1918:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1913:6:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4232,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4223,"src":"1923:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4233,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4215,"src":"1933:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1923:11:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4235,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4217,"src":"1938:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1923:16:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1913:26:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4238,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"1941:6:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":4239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MUL_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1274,"src":"1941:19:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4228,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"1904:8:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1904:57:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4241,"nodeType":"ExpressionStatement","src":"1904:57:45"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4242,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4223,"src":"1979:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4243,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"1989:3:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1979:13:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4221,"id":4245,"nodeType":"Return","src":"1972:20:45"}]},"id":4247,"implemented":true,"kind":"function","modifiers":[],"name":"mulDown","nodeType":"FunctionDefinition","parameters":{"id":4218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4215,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":4247,"src":"1807:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4214,"name":"uint256","nodeType":"ElementaryTypeName","src":"1807:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4217,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":4247,"src":"1818:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4216,"name":"uint256","nodeType":"ElementaryTypeName","src":"1818:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1806:22:45"},"returnParameters":{"id":4221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4220,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4247,"src":"1852:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4219,"name":"uint256","nodeType":"ElementaryTypeName","src":"1852:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1851:9:45"},"scope":4560,"src":"1790:209:45","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4294,"nodeType":"Block","src":"2074:548:45","statements":[{"assignments":[4257],"declarations":[{"constant":false,"id":4257,"mutability":"mutable","name":"product","nodeType":"VariableDeclaration","scope":4294,"src":"2084:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4256,"name":"uint256","nodeType":"ElementaryTypeName","src":"2084:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4261,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4258,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4249,"src":"2102:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4259,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4251,"src":"2106:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2102:5:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2084:23:45"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4263,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4249,"src":"2126:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2131:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2126:6:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4266,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4257,"src":"2136:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4267,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4249,"src":"2146:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2136:11:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4269,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4251,"src":"2151:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2136:16:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2126:26:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4272,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"2154:6:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":4273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MUL_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1274,"src":"2154:19:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4262,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"2117:8:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2117:57:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4275,"nodeType":"ExpressionStatement","src":"2117:57:45"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4276,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4257,"src":"2189:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2200:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2189:12:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4292,"nodeType":"Block","src":"2242:374:45","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4282,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4257,"src":"2582:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2592:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2582:11:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4285,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2581:13:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4286,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"2597:3:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2581:19:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4288,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2580:21:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2604:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2580:25:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4255,"id":4291,"nodeType":"Return","src":"2573:32:45"}]},"id":4293,"nodeType":"IfStatement","src":"2185:431:45","trueBody":{"id":4281,"nodeType":"Block","src":"2203:33:45","statements":[{"expression":{"hexValue":"30","id":4279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2224:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4255,"id":4280,"nodeType":"Return","src":"2217:8:45"}]}}]},"id":4295,"implemented":true,"kind":"function","modifiers":[],"name":"mulUp","nodeType":"FunctionDefinition","parameters":{"id":4252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4249,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":4295,"src":"2020:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4248,"name":"uint256","nodeType":"ElementaryTypeName","src":"2020:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4251,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":4295,"src":"2031:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4250,"name":"uint256","nodeType":"ElementaryTypeName","src":"2031:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2019:22:45"},"returnParameters":{"id":4255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4254,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4295,"src":"2065:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4253,"name":"uint256","nodeType":"ElementaryTypeName","src":"2065:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2064:9:45"},"scope":4560,"src":"2005:617:45","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4340,"nodeType":"Block","src":"2699:284:45","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4305,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4299,"src":"2718:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2723:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2718:6:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4308,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"2726:6:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":4309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1277,"src":"2726:20:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4304,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"2709:8:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2709:38:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4311,"nodeType":"ExpressionStatement","src":"2709:38:45"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4312,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4297,"src":"2762:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2767:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2762:6:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4338,"nodeType":"Block","src":"2809:168:45","statements":[{"assignments":[4319],"declarations":[{"constant":false,"id":4319,"mutability":"mutable","name":"aInflated","nodeType":"VariableDeclaration","scope":4338,"src":"2823:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4318,"name":"uint256","nodeType":"ElementaryTypeName","src":"2823:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4323,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4320,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4297,"src":"2843:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4321,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"2847:3:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2843:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2823:27:45"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4325,"name":"aInflated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4319,"src":"2873:9:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4326,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4297,"src":"2885:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2873:13:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4328,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"2890:3:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2873:20:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4330,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"2895:6:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":4331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"DIV_INTERNAL","nodeType":"MemberAccess","referencedDeclaration":1280,"src":"2895:19:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4324,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"2864:8:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2864:51:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4333,"nodeType":"ExpressionStatement","src":"2864:51:45"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4334,"name":"aInflated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4319,"src":"2953:9:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4335,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4299,"src":"2965:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2953:13:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4303,"id":4337,"nodeType":"Return","src":"2946:20:45"}]},"id":4339,"nodeType":"IfStatement","src":"2758:219:45","trueBody":{"id":4317,"nodeType":"Block","src":"2770:33:45","statements":[{"expression":{"hexValue":"30","id":4315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2791:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4303,"id":4316,"nodeType":"Return","src":"2784:8:45"}]}}]},"id":4341,"implemented":true,"kind":"function","modifiers":[],"name":"divDown","nodeType":"FunctionDefinition","parameters":{"id":4300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4297,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":4341,"src":"2645:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4296,"name":"uint256","nodeType":"ElementaryTypeName","src":"2645:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4299,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":4341,"src":"2656:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4298,"name":"uint256","nodeType":"ElementaryTypeName","src":"2656:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2644:22:45"},"returnParameters":{"id":4303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4302,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4341,"src":"2690:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4301,"name":"uint256","nodeType":"ElementaryTypeName","src":"2690:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2689:9:45"},"scope":4560,"src":"2628:355:45","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4392,"nodeType":"Block","src":"3058:613:45","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4351,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4345,"src":"3077:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3082:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3077:6:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4354,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"3085:6:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":4355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1277,"src":"3085:20:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4350,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"3068:8:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3068:38:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4357,"nodeType":"ExpressionStatement","src":"3068:38:45"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4358,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4343,"src":"3121:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3126:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3121:6:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4390,"nodeType":"Block","src":"3168:497:45","statements":[{"assignments":[4365],"declarations":[{"constant":false,"id":4365,"mutability":"mutable","name":"aInflated","nodeType":"VariableDeclaration","scope":4390,"src":"3182:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4364,"name":"uint256","nodeType":"ElementaryTypeName","src":"3182:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4369,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4366,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4343,"src":"3202:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4367,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"3206:3:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3202:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3182:27:45"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4371,"name":"aInflated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4365,"src":"3232:9:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4372,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4343,"src":"3244:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3232:13:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4374,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"3249:3:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3232:20:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4376,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"3254:6:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":4377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"DIV_INTERNAL","nodeType":"MemberAccess","referencedDeclaration":1280,"src":"3254:19:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4370,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"3223:8:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3223:51:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4379,"nodeType":"ExpressionStatement","src":"3223:51:45"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4380,"name":"aInflated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4365,"src":"3631:9:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3643:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3631:13:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4383,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3630:15:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4384,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4345,"src":"3648:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3630:19:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4386,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3629:21:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3653:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3629:25:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4349,"id":4389,"nodeType":"Return","src":"3622:32:45"}]},"id":4391,"nodeType":"IfStatement","src":"3117:548:45","trueBody":{"id":4363,"nodeType":"Block","src":"3129:33:45","statements":[{"expression":{"hexValue":"30","id":4361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3150:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4349,"id":4362,"nodeType":"Return","src":"3143:8:45"}]}}]},"id":4393,"implemented":true,"kind":"function","modifiers":[],"name":"divUp","nodeType":"FunctionDefinition","parameters":{"id":4346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4343,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":4393,"src":"3004:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4342,"name":"uint256","nodeType":"ElementaryTypeName","src":"3004:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4345,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":4393,"src":"3015:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4344,"name":"uint256","nodeType":"ElementaryTypeName","src":"3015:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3003:22:45"},"returnParameters":{"id":4349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4348,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4393,"src":"3049:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4347,"name":"uint256","nodeType":"ElementaryTypeName","src":"3049:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3048:9:45"},"scope":4560,"src":"2989:682:45","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4469,"nodeType":"Block","src":"3974:681:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4403,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4398,"src":"4142:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4404,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"4147:3:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4142:8:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4409,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4398,"src":"4195:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4410,"name":"TWO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4150,"src":"4200:3:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4195:8:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4418,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4398,"src":"4260:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4419,"name":"FOUR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4155,"src":"4265:4:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4260:9:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4465,"nodeType":"Block","src":"4376:273:45","statements":[{"assignments":[4435],"declarations":[{"constant":false,"id":4435,"mutability":"mutable","name":"raw","nodeType":"VariableDeclaration","scope":4465,"src":"4390:11:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4434,"name":"uint256","nodeType":"ElementaryTypeName","src":"4390:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4441,"initialValue":{"arguments":[{"id":4438,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"4419:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4439,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4398,"src":"4422:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4436,"name":"LogExpMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5858,"src":"4404:10:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LogExpMath_$5858_$","typeString":"type(library LogExpMath)"}},"id":4437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pow","nodeType":"MemberAccess","referencedDeclaration":4802,"src":"4404:14:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4404:20:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4390:34:45"},{"assignments":[4443],"declarations":[{"constant":false,"id":4443,"mutability":"mutable","name":"maxError","nodeType":"VariableDeclaration","scope":4465,"src":"4438:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4442,"name":"uint256","nodeType":"ElementaryTypeName","src":"4438:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4451,"initialValue":{"arguments":[{"arguments":[{"id":4446,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4435,"src":"4467:3:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4447,"name":"MAX_POW_RELATIVE_ERROR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4158,"src":"4472:22:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4445,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4295,"src":"4461:5:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4461:34:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":4449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4497:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":4444,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4187,"src":"4457:3:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4457:42:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4438:61:45"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4452,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4435,"src":"4518:3:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4453,"name":"maxError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4443,"src":"4524:8:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4518:14:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4463,"nodeType":"Block","src":"4581:58:45","statements":[{"expression":{"arguments":[{"id":4459,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4435,"src":"4610:3:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4460,"name":"maxError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4443,"src":"4615:8:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4458,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4213,"src":"4606:3:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4606:18:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4402,"id":4462,"nodeType":"Return","src":"4599:25:45"}]},"id":4464,"nodeType":"IfStatement","src":"4514:125:45","trueBody":{"id":4457,"nodeType":"Block","src":"4534:41:45","statements":[{"expression":{"hexValue":"30","id":4455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4559:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4402,"id":4456,"nodeType":"Return","src":"4552:8:45"}]}}]},"id":4466,"nodeType":"IfStatement","src":"4256:393:45","trueBody":{"id":4433,"nodeType":"Block","src":"4271:99:45","statements":[{"assignments":[4422],"declarations":[{"constant":false,"id":4422,"mutability":"mutable","name":"square","nodeType":"VariableDeclaration","scope":4433,"src":"4285:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4421,"name":"uint256","nodeType":"ElementaryTypeName","src":"4285:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4427,"initialValue":{"arguments":[{"id":4424,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"4310:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4425,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"4313:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4423,"name":"mulDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4247,"src":"4302:7:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4302:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4285:30:45"},{"expression":{"arguments":[{"id":4429,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4422,"src":"4344:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4430,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4422,"src":"4352:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4428,"name":"mulDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4247,"src":"4336:7:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4336:23:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4402,"id":4432,"nodeType":"Return","src":"4329:30:45"}]}},"id":4467,"nodeType":"IfStatement","src":"4191:458:45","trueBody":{"id":4417,"nodeType":"Block","src":"4205:45:45","statements":[{"expression":{"arguments":[{"id":4413,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"4234:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4414,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"4237:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4412,"name":"mulDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4247,"src":"4226:7:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4226:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4402,"id":4416,"nodeType":"Return","src":"4219:20:45"}]}},"id":4468,"nodeType":"IfStatement","src":"4138:511:45","trueBody":{"id":4408,"nodeType":"Block","src":"4152:33:45","statements":[{"expression":{"id":4406,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"4173:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4402,"id":4407,"nodeType":"Return","src":"4166:8:45"}]}}]},"documentation":{"id":4394,"nodeType":"StructuredDocumentation","src":"3677:221:45","text":" @dev Returns x^y, assuming both are fixed point numbers, rounding down. The result is guaranteed to not be above\n the true value (that is, the error function expected - actual is always positive)."},"id":4470,"implemented":true,"kind":"function","modifiers":[],"name":"powDown","nodeType":"FunctionDefinition","parameters":{"id":4399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4396,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4470,"src":"3920:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4395,"name":"uint256","nodeType":"ElementaryTypeName","src":"3920:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4398,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":4470,"src":"3931:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4397,"name":"uint256","nodeType":"ElementaryTypeName","src":"3931:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3919:22:45"},"returnParameters":{"id":4402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4401,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4470,"src":"3965:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4400,"name":"uint256","nodeType":"ElementaryTypeName","src":"3965:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3964:9:45"},"scope":4560,"src":"3903:752:45","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4538,"nodeType":"Block","src":"4954:576:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4480,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4475,"src":"5122:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4481,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"5127:3:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5122:8:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4486,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4475,"src":"5175:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4487,"name":"TWO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4150,"src":"5180:3:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5175:8:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4495,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4475,"src":"5238:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4496,"name":"FOUR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4155,"src":"5243:4:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5238:9:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4534,"nodeType":"Block","src":"5350:174:45","statements":[{"assignments":[4512],"declarations":[{"constant":false,"id":4512,"mutability":"mutable","name":"raw","nodeType":"VariableDeclaration","scope":4534,"src":"5364:11:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4511,"name":"uint256","nodeType":"ElementaryTypeName","src":"5364:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4518,"initialValue":{"arguments":[{"id":4515,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"5393:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4516,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4475,"src":"5396:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4513,"name":"LogExpMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5858,"src":"5378:10:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LogExpMath_$5858_$","typeString":"type(library LogExpMath)"}},"id":4514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pow","nodeType":"MemberAccess","referencedDeclaration":4802,"src":"5378:14:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5378:20:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5364:34:45"},{"assignments":[4520],"declarations":[{"constant":false,"id":4520,"mutability":"mutable","name":"maxError","nodeType":"VariableDeclaration","scope":4534,"src":"5412:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4519,"name":"uint256","nodeType":"ElementaryTypeName","src":"5412:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4528,"initialValue":{"arguments":[{"arguments":[{"id":4523,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4512,"src":"5441:3:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4524,"name":"MAX_POW_RELATIVE_ERROR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4158,"src":"5446:22:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4522,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4295,"src":"5435:5:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5435:34:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":4526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5471:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":4521,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4187,"src":"5431:3:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5431:42:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5412:61:45"},{"expression":{"arguments":[{"id":4530,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4512,"src":"5499:3:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4531,"name":"maxError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4520,"src":"5504:8:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4529,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4187,"src":"5495:3:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5495:18:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4479,"id":4533,"nodeType":"Return","src":"5488:25:45"}]},"id":4535,"nodeType":"IfStatement","src":"5234:290:45","trueBody":{"id":4510,"nodeType":"Block","src":"5249:95:45","statements":[{"assignments":[4499],"declarations":[{"constant":false,"id":4499,"mutability":"mutable","name":"square","nodeType":"VariableDeclaration","scope":4510,"src":"5263:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4498,"name":"uint256","nodeType":"ElementaryTypeName","src":"5263:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4504,"initialValue":{"arguments":[{"id":4501,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"5286:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4502,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"5289:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4500,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4295,"src":"5280:5:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5280:11:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5263:28:45"},{"expression":{"arguments":[{"id":4506,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4499,"src":"5318:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4507,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4499,"src":"5326:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4505,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4295,"src":"5312:5:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5312:21:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4479,"id":4509,"nodeType":"Return","src":"5305:28:45"}]}},"id":4536,"nodeType":"IfStatement","src":"5171:353:45","trueBody":{"id":4494,"nodeType":"Block","src":"5185:43:45","statements":[{"expression":{"arguments":[{"id":4490,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"5212:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4491,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"5215:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4489,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4295,"src":"5206:5:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5206:11:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4479,"id":4493,"nodeType":"Return","src":"5199:18:45"}]}},"id":4537,"nodeType":"IfStatement","src":"5118:406:45","trueBody":{"id":4485,"nodeType":"Block","src":"5132:33:45","statements":[{"expression":{"id":4483,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"5153:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4479,"id":4484,"nodeType":"Return","src":"5146:8:45"}]}}]},"documentation":{"id":4471,"nodeType":"StructuredDocumentation","src":"4661:219:45","text":" @dev Returns x^y, assuming both are fixed point numbers, rounding up. The result is guaranteed to not be below\n the true value (that is, the error function expected - actual is always negative)."},"id":4539,"implemented":true,"kind":"function","modifiers":[],"name":"powUp","nodeType":"FunctionDefinition","parameters":{"id":4476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4473,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4539,"src":"4900:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4472,"name":"uint256","nodeType":"ElementaryTypeName","src":"4900:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4475,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":4539,"src":"4911:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4474,"name":"uint256","nodeType":"ElementaryTypeName","src":"4911:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4899:22:45"},"returnParameters":{"id":4479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4478,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4539,"src":"4945:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4477,"name":"uint256","nodeType":"ElementaryTypeName","src":"4945:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4944:9:45"},"scope":4560,"src":"4885:645:45","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4558,"nodeType":"Block","src":"5876:49:45","statements":[{"expression":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4547,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4542,"src":"5894:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4548,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"5898:3:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5894:7:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":4550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5893:9:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":4555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5917:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":4556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5893:25:45","trueExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4551,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"5906:3:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4552,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4542,"src":"5912:1:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5906:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4554,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5905:9:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4546,"id":4557,"nodeType":"Return","src":"5886:32:45"}]},"documentation":{"id":4540,"nodeType":"StructuredDocumentation","src":"5536:272:45","text":" @dev Returns the complement of a value (1 - x), capped to 0 if x is larger than 1.\n Useful when computing the complement for values with some level of relative error, as it strips this error and\n prevents intermediate negative values."},"id":4559,"implemented":true,"kind":"function","modifiers":[],"name":"complement","nodeType":"FunctionDefinition","parameters":{"id":4543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4542,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4559,"src":"5833:9:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4541,"name":"uint256","nodeType":"ElementaryTypeName","src":"5833:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5832:11:45"},"returnParameters":{"id":4546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4545,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4559,"src":"5867:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4544,"name":"uint256","nodeType":"ElementaryTypeName","src":"5867:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5866:9:45"},"scope":4560,"src":"5813:112:45","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4561,"src":"888:5039:45"}],"src":"688:5240:45"},"id":45},"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol","exportedSymbols":{"LogExpMath":[5858]},"id":5859,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4562,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"1094:23:46"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":4563,"nodeType":"ImportDirective","scope":5859,"sourceUnit":1744,"src":"1119:90:46","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":4564,"nodeType":"StructuredDocumentation","src":"1234:446:46","text":" @dev Exponentiation and logarithm functions for 18 decimal fixed point numbers (both base and exponent/argument).\n Exponentiation and logarithm with arbitrary bases (x^y and log_x(y)) are implemented by conversion to natural\n exponentiation and logarithm (where the base is Euler's number).\n @author Fernando Martinelli - @fernandomartinelli\n @author Sergio Yuhjtman - @sergioyuhjtman\n @author Daniel Fernandez - @dmf7z"},"fullyImplemented":true,"id":5858,"linearizedBaseContracts":[5858],"name":"LogExpMath","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":4567,"mutability":"constant","name":"ONE_18","nodeType":"VariableDeclaration","scope":5858,"src":"1961:29:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4565,"name":"int256","nodeType":"ElementaryTypeName","src":"1961:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31653138","id":4566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1986:4:46","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":true,"id":4570,"mutability":"constant","name":"ONE_20","nodeType":"VariableDeclaration","scope":5858,"src":"2151:29:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4568,"name":"int256","nodeType":"ElementaryTypeName","src":"2151:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31653230","id":4569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2176:4:46","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000_by_1","typeString":"int_const 100000000000000000000"},"value":"1e20"},"visibility":"internal"},{"constant":true,"id":4573,"mutability":"constant","name":"ONE_36","nodeType":"VariableDeclaration","scope":5858,"src":"2186:29:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4571,"name":"int256","nodeType":"ElementaryTypeName","src":"2186:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31653336","id":4572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2211:4:46","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(29 digits omitted)...0000"},"value":"1e36"},"visibility":"internal"},{"constant":true,"id":4576,"mutability":"constant","name":"MAX_NATURAL_EXPONENT","nodeType":"VariableDeclaration","scope":5858,"src":"2732:45:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4574,"name":"int256","nodeType":"ElementaryTypeName","src":"2732:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313330653138","id":4575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2771:6:46","typeDescriptions":{"typeIdentifier":"t_rational_130000000000000000000_by_1","typeString":"int_const 130000000000000000000"},"value":"130e18"},"visibility":"internal"},{"constant":true,"id":4580,"mutability":"constant","name":"MIN_NATURAL_EXPONENT","nodeType":"VariableDeclaration","scope":5858,"src":"2783:45:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4577,"name":"int256","nodeType":"ElementaryTypeName","src":"2783:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"id":4579,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2822:6:46","subExpression":{"hexValue":"3431653138","id":4578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2823:5:46","typeDescriptions":{"typeIdentifier":"t_rational_41000000000000000000_by_1","typeString":"int_const 41000000000000000000"},"value":"41e18"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_41000000000000000000_by_1","typeString":"int_const -41000000000000000000"}},"visibility":"internal"},{"constant":true,"id":4585,"mutability":"constant","name":"LN_36_LOWER_BOUND","nodeType":"VariableDeclaration","scope":5858,"src":"2979:49:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4581,"name":"int256","nodeType":"ElementaryTypeName","src":"2979:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":4582,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"3015:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31653137","id":4583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3024:4:46","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000_by_1","typeString":"int_const 100000000000000000"},"value":"1e17"},"src":"3015:13:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":true,"id":4590,"mutability":"constant","name":"LN_36_UPPER_BOUND","nodeType":"VariableDeclaration","scope":5858,"src":"3034:49:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4586,"name":"int256","nodeType":"ElementaryTypeName","src":"3034:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4589,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":4587,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"3070:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31653137","id":4588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3079:4:46","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000_by_1","typeString":"int_const 100000000000000000"},"value":"1e17"},"src":"3070:13:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":true,"id":4600,"mutability":"constant","name":"MILD_EXPONENT_BOUND","nodeType":"VariableDeclaration","scope":5858,"src":"3090:63:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4591,"name":"uint256","nodeType":"ElementaryTypeName","src":"3090:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4599,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_28948022309329048855892746252171976963317496166410141009864396001978282409984_by_1","typeString":"int_const 2894...(69 digits omitted)...9984"},"id":4594,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3129:1:46","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"323534","id":4593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3132:3:46","typeDescriptions":{"typeIdentifier":"t_rational_254_by_1","typeString":"int_const 254"},"value":"254"},"src":"3129:6:46","typeDescriptions":{"typeIdentifier":"t_rational_28948022309329048855892746252171976963317496166410141009864396001978282409984_by_1","typeString":"int_const 2894...(69 digits omitted)...9984"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":4597,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"3146:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3138:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4595,"name":"uint256","nodeType":"ElementaryTypeName","src":"3138:7:46","typeDescriptions":{}}},"id":4598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3138:15:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3129:24:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":4603,"mutability":"constant","name":"x0","nodeType":"VariableDeclaration","scope":5858,"src":"3188:42:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4601,"name":"int256","nodeType":"ElementaryTypeName","src":"3188:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313238303030303030303030303030303030303030","id":4602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3209:21:46","typeDescriptions":{"typeIdentifier":"t_rational_128000000000000000000_by_1","typeString":"int_const 128000000000000000000"},"value":"128000000000000000000"},"visibility":"internal"},{"constant":true,"id":4606,"mutability":"constant","name":"a0","nodeType":"VariableDeclaration","scope":5858,"src":"3244:77:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4604,"name":"int256","nodeType":"ElementaryTypeName","src":"3244:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3338383737303834303539393435393530393232323030303030303030303030303030303030303030303030303030303030303030303030","id":4605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3265:56:46","typeDescriptions":{"typeIdentifier":"t_rational_38877084059945950922200000000000000000000000000000000000_by_1","typeString":"int_const 3887...(48 digits omitted)...0000"},"value":"38877084059945950922200000000000000000000000000000000000"},"visibility":"internal"},{"constant":true,"id":4609,"mutability":"constant","name":"x1","nodeType":"VariableDeclaration","scope":5858,"src":"3352:41:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4607,"name":"int256","nodeType":"ElementaryTypeName","src":"3352:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3634303030303030303030303030303030303030","id":4608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3373:20:46","typeDescriptions":{"typeIdentifier":"t_rational_64000000000000000000_by_1","typeString":"int_const 64000000000000000000"},"value":"64000000000000000000"},"visibility":"internal"},{"constant":true,"id":4612,"mutability":"constant","name":"a1","nodeType":"VariableDeclaration","scope":5858,"src":"3407:49:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4610,"name":"int256","nodeType":"ElementaryTypeName","src":"3407:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"36323335313439303830383131363136383832393130303030303030","id":4611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3428:28:46","typeDescriptions":{"typeIdentifier":"t_rational_6235149080811616882910000000_by_1","typeString":"int_const 6235149080811616882910000000"},"value":"6235149080811616882910000000"},"visibility":"internal"},{"constant":true,"id":4615,"mutability":"constant","name":"x2","nodeType":"VariableDeclaration","scope":5858,"src":"3516:43:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4613,"name":"int256","nodeType":"ElementaryTypeName","src":"3516:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"33323030303030303030303030303030303030303030","id":4614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3537:22:46","typeDescriptions":{"typeIdentifier":"t_rational_3200000000000000000000_by_1","typeString":"int_const 3200000000000000000000"},"value":"3200000000000000000000"},"visibility":"internal"},{"constant":true,"id":4618,"mutability":"constant","name":"a2","nodeType":"VariableDeclaration","scope":5858,"src":"3573:55:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4616,"name":"int256","nodeType":"ElementaryTypeName","src":"3573:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"37383936323936303138323638303639353136313030303030303030303030303030","id":4617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3594:34:46","typeDescriptions":{"typeIdentifier":"t_rational_7896296018268069516100000000000000_by_1","typeString":"int_const 7896...(26 digits omitted)...0000"},"value":"7896296018268069516100000000000000"},"visibility":"internal"},{"constant":true,"id":4621,"mutability":"constant","name":"x3","nodeType":"VariableDeclaration","scope":5858,"src":"3645:43:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4619,"name":"int256","nodeType":"ElementaryTypeName","src":"3645:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31363030303030303030303030303030303030303030","id":4620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3666:22:46","typeDescriptions":{"typeIdentifier":"t_rational_1600000000000000000000_by_1","typeString":"int_const 1600000000000000000000"},"value":"1600000000000000000000"},"visibility":"internal"},{"constant":true,"id":4624,"mutability":"constant","name":"a3","nodeType":"VariableDeclaration","scope":5858,"src":"3702:48:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4622,"name":"int256","nodeType":"ElementaryTypeName","src":"3702:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"383838363131303532303530373837323633363736303030303030","id":4623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3723:27:46","typeDescriptions":{"typeIdentifier":"t_rational_888611052050787263676000000_by_1","typeString":"int_const 888611052050787263676000000"},"value":"888611052050787263676000000"},"visibility":"internal"},{"constant":true,"id":4627,"mutability":"constant","name":"x4","nodeType":"VariableDeclaration","scope":5858,"src":"3767:42:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4625,"name":"int256","nodeType":"ElementaryTypeName","src":"3767:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"383030303030303030303030303030303030303030","id":4626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3788:21:46","typeDescriptions":{"typeIdentifier":"t_rational_800000000000000000000_by_1","typeString":"int_const 800000000000000000000"},"value":"800000000000000000000"},"visibility":"internal"},{"constant":true,"id":4630,"mutability":"constant","name":"a4","nodeType":"VariableDeclaration","scope":5858,"src":"3823:45:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4628,"name":"int256","nodeType":"ElementaryTypeName","src":"3823:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323938303935373938373034313732383237343734303030","id":4629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3844:24:46","typeDescriptions":{"typeIdentifier":"t_rational_298095798704172827474000_by_1","typeString":"int_const 298095798704172827474000"},"value":"298095798704172827474000"},"visibility":"internal"},{"constant":true,"id":4633,"mutability":"constant","name":"x5","nodeType":"VariableDeclaration","scope":5858,"src":"3885:42:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4631,"name":"int256","nodeType":"ElementaryTypeName","src":"3885:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"343030303030303030303030303030303030303030","id":4632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3906:21:46","typeDescriptions":{"typeIdentifier":"t_rational_400000000000000000000_by_1","typeString":"int_const 400000000000000000000"},"value":"400000000000000000000"},"visibility":"internal"},{"constant":true,"id":4636,"mutability":"constant","name":"a5","nodeType":"VariableDeclaration","scope":5858,"src":"3941:43:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4634,"name":"int256","nodeType":"ElementaryTypeName","src":"3941:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"35343539383135303033333134343233393037383130","id":4635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3962:22:46","typeDescriptions":{"typeIdentifier":"t_rational_5459815003314423907810_by_1","typeString":"int_const 5459815003314423907810"},"value":"5459815003314423907810"},"visibility":"internal"},{"constant":true,"id":4639,"mutability":"constant","name":"x6","nodeType":"VariableDeclaration","scope":5858,"src":"4001:42:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4637,"name":"int256","nodeType":"ElementaryTypeName","src":"4001:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323030303030303030303030303030303030303030","id":4638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4022:21:46","typeDescriptions":{"typeIdentifier":"t_rational_200000000000000000000_by_1","typeString":"int_const 200000000000000000000"},"value":"200000000000000000000"},"visibility":"internal"},{"constant":true,"id":4642,"mutability":"constant","name":"a6","nodeType":"VariableDeclaration","scope":5858,"src":"4057:42:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4640,"name":"int256","nodeType":"ElementaryTypeName","src":"4057:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"373338393035363039383933303635303232373233","id":4641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4078:21:46","typeDescriptions":{"typeIdentifier":"t_rational_738905609893065022723_by_1","typeString":"int_const 738905609893065022723"},"value":"738905609893065022723"},"visibility":"internal"},{"constant":true,"id":4645,"mutability":"constant","name":"x7","nodeType":"VariableDeclaration","scope":5858,"src":"4116:42:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4643,"name":"int256","nodeType":"ElementaryTypeName","src":"4116:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313030303030303030303030303030303030303030","id":4644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4137:21:46","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000_by_1","typeString":"int_const 100000000000000000000"},"value":"100000000000000000000"},"visibility":"internal"},{"constant":true,"id":4648,"mutability":"constant","name":"a7","nodeType":"VariableDeclaration","scope":5858,"src":"4172:42:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4646,"name":"int256","nodeType":"ElementaryTypeName","src":"4172:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323731383238313832383435393034353233353336","id":4647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4193:21:46","typeDescriptions":{"typeIdentifier":"t_rational_271828182845904523536_by_1","typeString":"int_const 271828182845904523536"},"value":"271828182845904523536"},"visibility":"internal"},{"constant":true,"id":4651,"mutability":"constant","name":"x8","nodeType":"VariableDeclaration","scope":5858,"src":"4231:41:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4649,"name":"int256","nodeType":"ElementaryTypeName","src":"4231:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3530303030303030303030303030303030303030","id":4650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4252:20:46","typeDescriptions":{"typeIdentifier":"t_rational_50000000000000000000_by_1","typeString":"int_const 50000000000000000000"},"value":"50000000000000000000"},"visibility":"internal"},{"constant":true,"id":4654,"mutability":"constant","name":"a8","nodeType":"VariableDeclaration","scope":5858,"src":"4287:42:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4652,"name":"int256","nodeType":"ElementaryTypeName","src":"4287:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313634383732313237303730303132383134363835","id":4653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4308:21:46","typeDescriptions":{"typeIdentifier":"t_rational_164872127070012814685_by_1","typeString":"int_const 164872127070012814685"},"value":"164872127070012814685"},"visibility":"internal"},{"constant":true,"id":4657,"mutability":"constant","name":"x9","nodeType":"VariableDeclaration","scope":5858,"src":"4346:41:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4655,"name":"int256","nodeType":"ElementaryTypeName","src":"4346:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3235303030303030303030303030303030303030","id":4656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4367:20:46","typeDescriptions":{"typeIdentifier":"t_rational_25000000000000000000_by_1","typeString":"int_const 25000000000000000000"},"value":"25000000000000000000"},"visibility":"internal"},{"constant":true,"id":4660,"mutability":"constant","name":"a9","nodeType":"VariableDeclaration","scope":5858,"src":"4402:42:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4658,"name":"int256","nodeType":"ElementaryTypeName","src":"4402:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313238343032353431363638373734313438343037","id":4659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4423:21:46","typeDescriptions":{"typeIdentifier":"t_rational_128402541668774148407_by_1","typeString":"int_const 128402541668774148407"},"value":"128402541668774148407"},"visibility":"internal"},{"constant":true,"id":4663,"mutability":"constant","name":"x10","nodeType":"VariableDeclaration","scope":5858,"src":"4461:42:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4661,"name":"int256","nodeType":"ElementaryTypeName","src":"4461:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3132353030303030303030303030303030303030","id":4662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4483:20:46","typeDescriptions":{"typeIdentifier":"t_rational_12500000000000000000_by_1","typeString":"int_const 12500000000000000000"},"value":"12500000000000000000"},"visibility":"internal"},{"constant":true,"id":4666,"mutability":"constant","name":"a10","nodeType":"VariableDeclaration","scope":5858,"src":"4518:43:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4664,"name":"int256","nodeType":"ElementaryTypeName","src":"4518:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313133333134383435333036363832363331363833","id":4665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4540:21:46","typeDescriptions":{"typeIdentifier":"t_rational_113314845306682631683_by_1","typeString":"int_const 113314845306682631683"},"value":"113314845306682631683"},"visibility":"internal"},{"constant":true,"id":4669,"mutability":"constant","name":"x11","nodeType":"VariableDeclaration","scope":5858,"src":"4579:41:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4667,"name":"int256","nodeType":"ElementaryTypeName","src":"4579:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"36323530303030303030303030303030303030","id":4668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4601:19:46","typeDescriptions":{"typeIdentifier":"t_rational_6250000000000000000_by_1","typeString":"int_const 6250000000000000000"},"value":"6250000000000000000"},"visibility":"internal"},{"constant":true,"id":4672,"mutability":"constant","name":"a11","nodeType":"VariableDeclaration","scope":5858,"src":"4635:43:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4670,"name":"int256","nodeType":"ElementaryTypeName","src":"4635:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313036343439343435383931373835393432393536","id":4671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4657:21:46","typeDescriptions":{"typeIdentifier":"t_rational_106449445891785942956_by_1","typeString":"int_const 106449445891785942956"},"value":"106449445891785942956"},"visibility":"internal"},{"body":{"id":4801,"nodeType":"Block","src":"4983:2128:46","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4682,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4677,"src":"4997:1:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5002:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4997:6:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4691,"nodeType":"IfStatement","src":"4993:131:46","trueBody":{"id":4690,"nodeType":"Block","src":"5005:119:46","statements":[{"expression":{"arguments":[{"id":4687,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"5106:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5098:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4685,"name":"uint256","nodeType":"ElementaryTypeName","src":"5098:7:46","typeDescriptions":{}}},"id":4688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5098:15:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4681,"id":4689,"nodeType":"Return","src":"5091:22:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4692,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4675,"src":"5138:1:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5143:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5138:6:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4698,"nodeType":"IfStatement","src":"5134:45:46","trueBody":{"id":4697,"nodeType":"Block","src":"5146:33:46","statements":[{"expression":{"hexValue":"30","id":4695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5167:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4681,"id":4696,"nodeType":"Return","src":"5160:8:46"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4700,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4675,"src":"5558:1:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":4701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5563:3:46","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"5558:8:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5570:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5558:13:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4705,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"5573:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":4706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"X_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1283,"src":"5573:22:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4699,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"5549:8:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5549:47:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4708,"nodeType":"ExpressionStatement","src":"5549:47:46"},{"assignments":[4710],"declarations":[{"constant":false,"id":4710,"mutability":"mutable","name":"x_int256","nodeType":"VariableDeclaration","scope":4801,"src":"5606:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4709,"name":"int256","nodeType":"ElementaryTypeName","src":"5606:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4715,"initialValue":{"arguments":[{"id":4713,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4675,"src":"5631:1:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5624:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":4711,"name":"int256","nodeType":"ElementaryTypeName","src":"5624:6:46","typeDescriptions":{}}},"id":4714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5624:9:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5606:27:46"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4717,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4677,"src":"5996:1:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4718,"name":"MILD_EXPONENT_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4600,"src":"6000:19:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5996:23:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4720,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"6021:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":4721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Y_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1286,"src":"6021:22:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4716,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"5987:8:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5987:57:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4723,"nodeType":"ExpressionStatement","src":"5987:57:46"},{"assignments":[4725],"declarations":[{"constant":false,"id":4725,"mutability":"mutable","name":"y_int256","nodeType":"VariableDeclaration","scope":4801,"src":"6054:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4724,"name":"int256","nodeType":"ElementaryTypeName","src":"6054:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4730,"initialValue":{"arguments":[{"id":4728,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4677,"src":"6079:1:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6072:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":4726,"name":"int256","nodeType":"ElementaryTypeName","src":"6072:6:46","typeDescriptions":{}}},"id":4729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6072:9:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"6054:27:46"},{"assignments":[4732],"declarations":[{"constant":false,"id":4732,"mutability":"mutable","name":"logx_times_y","nodeType":"VariableDeclaration","scope":4801,"src":"6092:19:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4731,"name":"int256","nodeType":"ElementaryTypeName","src":"6092:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4733,"nodeType":"VariableDeclarationStatement","src":"6092:19:46"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4734,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4585,"src":"6125:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4735,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4710,"src":"6145:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6125:28:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4737,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4710,"src":"6157:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4738,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4590,"src":"6168:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6157:28:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6125:60:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4776,"nodeType":"Block","src":"6741:64:46","statements":[{"expression":{"id":4774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4768,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"6755:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4770,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4710,"src":"6774:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4769,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5703,"src":"6770:3:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6770:13:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4772,"name":"y_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4725,"src":"6786:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6770:24:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6755:39:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4775,"nodeType":"ExpressionStatement","src":"6755:39:46"}]},"id":4777,"nodeType":"IfStatement","src":"6121:684:46","trueBody":{"id":4767,"nodeType":"Block","src":"6187:548:46","statements":[{"assignments":[4742],"declarations":[{"constant":false,"id":4742,"mutability":"mutable","name":"ln_36_x","nodeType":"VariableDeclaration","scope":4767,"src":"6201:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4741,"name":"int256","nodeType":"ElementaryTypeName","src":"6201:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4746,"initialValue":{"arguments":[{"id":4744,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4710,"src":"6225:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4743,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5857,"src":"6218:6:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6218:16:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"6201:33:46"},{"expression":{"id":4765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4747,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"6635:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4748,"name":"ln_36_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4742,"src":"6652:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4749,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"6662:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6652:16:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4751,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6651:18:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4752,"name":"y_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4725,"src":"6672:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6651:29:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4754,"name":"ln_36_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4742,"src":"6685:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":4755,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"6695:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6685:16:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4757,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6684:18:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4758,"name":"y_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4725,"src":"6705:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6684:29:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4760,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6683:31:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4761,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"6717:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6683:40:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6651:72:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4764,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6650:74:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6635:89:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4766,"nodeType":"ExpressionStatement","src":"6635:89:46"}]}},{"expression":{"id":4780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4778,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"6814:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":4779,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"6830:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6814:22:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4781,"nodeType":"ExpressionStatement","src":"6814:22:46"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4783,"name":"MIN_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4580,"src":"6932:20:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4784,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"6956:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6932:36:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4786,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"6972:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4787,"name":"MAX_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4576,"src":"6988:20:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6972:36:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6932:76:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4790,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"7022:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":4791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PRODUCT_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1289,"src":"7022:28:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4782,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"6910:8:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6910:150:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4793,"nodeType":"ExpressionStatement","src":"6910:150:46"},{"expression":{"arguments":[{"arguments":[{"id":4797,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"7090:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4796,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5229,"src":"7086:3:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7086:17:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4795,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7078:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4794,"name":"uint256","nodeType":"ElementaryTypeName","src":"7078:7:46","typeDescriptions":{}}},"id":4799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7078:26:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4681,"id":4800,"nodeType":"Return","src":"7071:33:46"}]},"documentation":{"id":4673,"nodeType":"StructuredDocumentation","src":"4697:214:46","text":" @dev Exponentiation (x^y) with unsigned 18 decimal fixed point base and exponent.\n Reverts if ln(x) * y is smaller than `MIN_NATURAL_EXPONENT`, or larger than `MAX_NATURAL_EXPONENT`."},"id":4802,"implemented":true,"kind":"function","modifiers":[],"name":"pow","nodeType":"FunctionDefinition","parameters":{"id":4678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4675,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":4802,"src":"4929:9:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4674,"name":"uint256","nodeType":"ElementaryTypeName","src":"4929:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4677,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":4802,"src":"4940:9:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4676,"name":"uint256","nodeType":"ElementaryTypeName","src":"4940:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4928:22:46"},"returnParameters":{"id":4681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4680,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4802,"src":"4974:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4679,"name":"uint256","nodeType":"ElementaryTypeName","src":"4974:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4973:9:46"},"scope":5858,"src":"4916:2195:46","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5228,"nodeType":"Block","src":"7379:5325:46","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4811,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"7398:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4812,"name":"MIN_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4580,"src":"7403:20:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7398:25:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4814,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"7427:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4815,"name":"MAX_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4576,"src":"7432:20:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7427:25:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7398:54:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4818,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"7454:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":4819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INVALID_EXPONENT","nodeType":"MemberAccess","referencedDeclaration":1292,"src":"7454:23:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4810,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"7389:8:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7389:89:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4821,"nodeType":"ExpressionStatement","src":"7389:89:46"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4822,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"7493:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":4823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7497:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7493:5:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4837,"nodeType":"IfStatement","src":"7489:353:46","trueBody":{"id":4836,"nodeType":"Block","src":"7500:342:46","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":4825,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"7804:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4826,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"7813:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7804:15:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4828,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7803:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":4831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7827:2:46","subExpression":{"id":4830,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"7828:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4829,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5229,"src":"7823:3:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":4832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7823:7:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7803:27:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4834,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7802:29:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4809,"id":4835,"nodeType":"Return","src":"7795:36:46"}]}},{"assignments":[4839],"declarations":[{"constant":false,"id":4839,"mutability":"mutable","name":"firstAN","nodeType":"VariableDeclaration","scope":5228,"src":"9143:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4838,"name":"int256","nodeType":"ElementaryTypeName","src":"9143:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4840,"nodeType":"VariableDeclarationStatement","src":"9143:14:46"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4841,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"9171:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4842,"name":"x0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4603,"src":"9176:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9171:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4853,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"9248:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4854,"name":"x1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4609,"src":"9253:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9248:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4869,"nodeType":"Block","src":"9321:66:46","statements":[{"expression":{"id":4867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4865,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4839,"src":"9335:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":4866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9345:1:46","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9335:11:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4868,"nodeType":"ExpressionStatement","src":"9335:11:46"}]},"id":4870,"nodeType":"IfStatement","src":"9244:143:46","trueBody":{"id":4864,"nodeType":"Block","src":"9257:58:46","statements":[{"expression":{"id":4858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4856,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"9271:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4857,"name":"x1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4609,"src":"9276:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9271:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4859,"nodeType":"ExpressionStatement","src":"9271:7:46"},{"expression":{"id":4862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4860,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4839,"src":"9292:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4861,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4612,"src":"9302:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9292:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4863,"nodeType":"ExpressionStatement","src":"9292:12:46"}]}},"id":4871,"nodeType":"IfStatement","src":"9167:220:46","trueBody":{"id":4852,"nodeType":"Block","src":"9180:58:46","statements":[{"expression":{"id":4846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4844,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"9194:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4845,"name":"x0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4603,"src":"9199:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9194:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4847,"nodeType":"ExpressionStatement","src":"9194:7:46"},{"expression":{"id":4850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4848,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4839,"src":"9215:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4849,"name":"a0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4606,"src":"9225:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9215:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4851,"nodeType":"ExpressionStatement","src":"9215:12:46"}]}},{"expression":{"id":4874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4872,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"9537:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"313030","id":4873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9542:3:46","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"9537:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4875,"nodeType":"ExpressionStatement","src":"9537:8:46"},{"assignments":[4877],"declarations":[{"constant":false,"id":4877,"mutability":"mutable","name":"product","nodeType":"VariableDeclaration","scope":5228,"src":"9758:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4876,"name":"int256","nodeType":"ElementaryTypeName","src":"9758:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4879,"initialValue":{"id":4878,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"9775:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"9758:23:46"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4880,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"9796:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4881,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4615,"src":"9801:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9796:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4897,"nodeType":"IfStatement","src":"9792:92:46","trueBody":{"id":4896,"nodeType":"Block","src":"9805:79:46","statements":[{"expression":{"id":4885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4883,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"9819:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4884,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4615,"src":"9824:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9819:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4886,"nodeType":"ExpressionStatement","src":"9819:7:46"},{"expression":{"id":4894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4887,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"9840:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4888,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"9851:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4889,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"9861:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9851:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4891,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9850:14:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4892,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"9867:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9850:23:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9840:33:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4895,"nodeType":"ExpressionStatement","src":"9840:33:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4898,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"9897:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4899,"name":"x3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4621,"src":"9902:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9897:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4915,"nodeType":"IfStatement","src":"9893:92:46","trueBody":{"id":4914,"nodeType":"Block","src":"9906:79:46","statements":[{"expression":{"id":4903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4901,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"9920:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4902,"name":"x3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4621,"src":"9925:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9920:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4904,"nodeType":"ExpressionStatement","src":"9920:7:46"},{"expression":{"id":4912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4905,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"9941:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4906,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"9952:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4907,"name":"a3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"9962:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9952:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4909,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9951:14:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4910,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"9968:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9951:23:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9941:33:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4913,"nodeType":"ExpressionStatement","src":"9941:33:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4916,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"9998:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4917,"name":"x4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"10003:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9998:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4933,"nodeType":"IfStatement","src":"9994:92:46","trueBody":{"id":4932,"nodeType":"Block","src":"10007:79:46","statements":[{"expression":{"id":4921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4919,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"10021:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4920,"name":"x4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"10026:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10021:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4922,"nodeType":"ExpressionStatement","src":"10021:7:46"},{"expression":{"id":4930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4923,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"10042:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4924,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"10053:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4925,"name":"a4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4630,"src":"10063:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10053:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4927,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10052:14:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4928,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"10069:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10052:23:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10042:33:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4931,"nodeType":"ExpressionStatement","src":"10042:33:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4934,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"10099:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4935,"name":"x5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4633,"src":"10104:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10099:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4951,"nodeType":"IfStatement","src":"10095:92:46","trueBody":{"id":4950,"nodeType":"Block","src":"10108:79:46","statements":[{"expression":{"id":4939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4937,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"10122:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4938,"name":"x5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4633,"src":"10127:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10122:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4940,"nodeType":"ExpressionStatement","src":"10122:7:46"},{"expression":{"id":4948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4941,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"10143:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4942,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"10154:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4943,"name":"a5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"10164:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10154:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4945,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10153:14:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4946,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"10170:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10153:23:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10143:33:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4949,"nodeType":"ExpressionStatement","src":"10143:33:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4952,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"10200:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4953,"name":"x6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4639,"src":"10205:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10200:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4969,"nodeType":"IfStatement","src":"10196:92:46","trueBody":{"id":4968,"nodeType":"Block","src":"10209:79:46","statements":[{"expression":{"id":4957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4955,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"10223:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4956,"name":"x6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4639,"src":"10228:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10223:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4958,"nodeType":"ExpressionStatement","src":"10223:7:46"},{"expression":{"id":4966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4959,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"10244:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4960,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"10255:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4961,"name":"a6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4642,"src":"10265:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10255:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4963,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10254:14:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4964,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"10271:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10254:23:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10244:33:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4967,"nodeType":"ExpressionStatement","src":"10244:33:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4970,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"10301:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4971,"name":"x7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4645,"src":"10306:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10301:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4987,"nodeType":"IfStatement","src":"10297:92:46","trueBody":{"id":4986,"nodeType":"Block","src":"10310:79:46","statements":[{"expression":{"id":4975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4973,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"10324:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4974,"name":"x7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4645,"src":"10329:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10324:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4976,"nodeType":"ExpressionStatement","src":"10324:7:46"},{"expression":{"id":4984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4977,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"10345:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4978,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"10356:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4979,"name":"a7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4648,"src":"10366:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10356:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4981,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10355:14:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4982,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"10372:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10355:23:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10345:33:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4985,"nodeType":"ExpressionStatement","src":"10345:33:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4988,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"10402:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4989,"name":"x8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4651,"src":"10407:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10402:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5005,"nodeType":"IfStatement","src":"10398:92:46","trueBody":{"id":5004,"nodeType":"Block","src":"10411:79:46","statements":[{"expression":{"id":4993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4991,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"10425:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4992,"name":"x8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4651,"src":"10430:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10425:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4994,"nodeType":"ExpressionStatement","src":"10425:7:46"},{"expression":{"id":5002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4995,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"10446:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4996,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"10457:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4997,"name":"a8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4654,"src":"10467:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10457:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4999,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10456:14:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5000,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"10473:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10456:23:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10446:33:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5003,"nodeType":"ExpressionStatement","src":"10446:33:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5006,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"10503:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5007,"name":"x9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4657,"src":"10508:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10503:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5023,"nodeType":"IfStatement","src":"10499:92:46","trueBody":{"id":5022,"nodeType":"Block","src":"10512:79:46","statements":[{"expression":{"id":5011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5009,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"10526:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":5010,"name":"x9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4657,"src":"10531:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10526:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5012,"nodeType":"ExpressionStatement","src":"10526:7:46"},{"expression":{"id":5020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5013,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"10547:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5014,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"10558:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5015,"name":"a9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4660,"src":"10568:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10558:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5017,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10557:14:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5018,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"10574:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10557:23:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10547:33:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5021,"nodeType":"ExpressionStatement","src":"10547:33:46"}]}},{"assignments":[5025],"declarations":[{"constant":false,"id":5025,"mutability":"mutable","name":"seriesSum","nodeType":"VariableDeclaration","scope":5228,"src":"10895:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5024,"name":"int256","nodeType":"ElementaryTypeName","src":"10895:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5027,"initialValue":{"id":5026,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"10914:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"10895:25:46"},{"assignments":[5029],"declarations":[{"constant":false,"id":5029,"mutability":"mutable","name":"term","nodeType":"VariableDeclaration","scope":5228,"src":"10985:11:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5028,"name":"int256","nodeType":"ElementaryTypeName","src":"10985:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5030,"nodeType":"VariableDeclarationStatement","src":"10985:11:46"},{"expression":{"id":5033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5031,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11105:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5032,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"11112:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11105:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5034,"nodeType":"ExpressionStatement","src":"11105:8:46"},{"expression":{"id":5037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5035,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"11123:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5036,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11136:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11123:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5038,"nodeType":"ExpressionStatement","src":"11123:17:46"},{"expression":{"id":5049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5039,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11377:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5040,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11386:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5041,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"11393:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11386:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5043,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11385:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5044,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"11398:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11385:19:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5046,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11384:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":5047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11408:1:46","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11384:25:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11377:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5050,"nodeType":"ExpressionStatement","src":"11377:32:46"},{"expression":{"id":5053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5051,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"11419:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5052,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11432:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11419:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5054,"nodeType":"ExpressionStatement","src":"11419:17:46"},{"expression":{"id":5065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5055,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11447:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5056,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11456:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5057,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"11463:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11456:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5059,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11455:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5060,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"11468:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11455:19:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5062,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11454:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":5063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11478:1:46","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"11454:25:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11447:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5066,"nodeType":"ExpressionStatement","src":"11447:32:46"},{"expression":{"id":5069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5067,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"11489:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5068,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11502:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11489:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5070,"nodeType":"ExpressionStatement","src":"11489:17:46"},{"expression":{"id":5081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5071,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11517:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5072,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11526:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5073,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"11533:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11526:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5075,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11525:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5076,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"11538:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11525:19:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5078,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11524:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"34","id":5079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11548:1:46","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11524:25:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11517:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5082,"nodeType":"ExpressionStatement","src":"11517:32:46"},{"expression":{"id":5085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5083,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"11559:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5084,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11572:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11559:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5086,"nodeType":"ExpressionStatement","src":"11559:17:46"},{"expression":{"id":5097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5087,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11587:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5088,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11596:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5089,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"11603:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11596:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5091,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11595:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5092,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"11608:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11595:19:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5094,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11594:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"35","id":5095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11618:1:46","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"11594:25:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11587:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5098,"nodeType":"ExpressionStatement","src":"11587:32:46"},{"expression":{"id":5101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5099,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"11629:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5100,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11642:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11629:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5102,"nodeType":"ExpressionStatement","src":"11629:17:46"},{"expression":{"id":5113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5103,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11657:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5104,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11666:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5105,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"11673:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11666:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5107,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11665:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5108,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"11678:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11665:19:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5110,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11664:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"36","id":5111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11688:1:46","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"11664:25:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11657:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5114,"nodeType":"ExpressionStatement","src":"11657:32:46"},{"expression":{"id":5117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5115,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"11699:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5116,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11712:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11699:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5118,"nodeType":"ExpressionStatement","src":"11699:17:46"},{"expression":{"id":5129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5119,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11727:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5120,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11736:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5121,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"11743:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11736:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5123,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11735:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5124,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"11748:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11735:19:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5126,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11734:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"37","id":5127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11758:1:46","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"11734:25:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11727:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5130,"nodeType":"ExpressionStatement","src":"11727:32:46"},{"expression":{"id":5133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5131,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"11769:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5132,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11782:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11769:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5134,"nodeType":"ExpressionStatement","src":"11769:17:46"},{"expression":{"id":5145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5135,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11797:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5136,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11806:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5137,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"11813:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11806:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5139,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11805:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5140,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"11818:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11805:19:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5142,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11804:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"38","id":5143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11828:1:46","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11804:25:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11797:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5146,"nodeType":"ExpressionStatement","src":"11797:32:46"},{"expression":{"id":5149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5147,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"11839:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5148,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11852:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11839:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5150,"nodeType":"ExpressionStatement","src":"11839:17:46"},{"expression":{"id":5161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5151,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11867:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5152,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11876:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5153,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"11883:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11876:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5155,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11875:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5156,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"11888:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11875:19:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5158,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11874:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"39","id":5159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11898:1:46","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"11874:25:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11867:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5162,"nodeType":"ExpressionStatement","src":"11867:32:46"},{"expression":{"id":5165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5163,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"11909:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5164,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11922:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11909:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5166,"nodeType":"ExpressionStatement","src":"11909:17:46"},{"expression":{"id":5177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5167,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11937:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5168,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11946:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5169,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"11953:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11946:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5171,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11945:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5172,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"11958:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11945:19:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5174,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11944:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130","id":5175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11968:2:46","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"11944:26:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11937:33:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5178,"nodeType":"ExpressionStatement","src":"11937:33:46"},{"expression":{"id":5181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5179,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"11980:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5180,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"11993:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11980:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5182,"nodeType":"ExpressionStatement","src":"11980:17:46"},{"expression":{"id":5193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5183,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"12008:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5184,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"12017:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5185,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"12024:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12017:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5187,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12016:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5188,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"12029:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12016:19:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5190,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12015:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3131","id":5191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12039:2:46","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"src":"12015:26:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12008:33:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5194,"nodeType":"ExpressionStatement","src":"12008:33:46"},{"expression":{"id":5197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5195,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"12051:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5196,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"12064:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12051:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5198,"nodeType":"ExpressionStatement","src":"12051:17:46"},{"expression":{"id":5209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5199,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"12079:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5200,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"12088:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5201,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"12095:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12088:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5203,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12087:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5204,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"12100:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12087:19:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5206,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12086:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3132","id":5207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12110:2:46","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"src":"12086:26:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12079:33:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5210,"nodeType":"ExpressionStatement","src":"12079:33:46"},{"expression":{"id":5213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5211,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"12122:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5212,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5029,"src":"12135:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12122:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5214,"nodeType":"ExpressionStatement","src":"12122:17:46"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5215,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"12650:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5216,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"12660:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12650:19:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5218,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12649:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5219,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"12673:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12649:30:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5221,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12648:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5222,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4839,"src":"12683:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12648:42:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5224,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12647:44:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":5225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12694:3:46","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"12647:50:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4809,"id":5227,"nodeType":"Return","src":"12640:57:46"}]},"documentation":{"id":4803,"nodeType":"StructuredDocumentation","src":"7117:203:46","text":" @dev Natural exponentiation (e^x) with signed 18 decimal fixed point exponent.\n Reverts if `x` is smaller than MIN_NATURAL_EXPONENT, or larger than `MAX_NATURAL_EXPONENT`."},"id":5229,"implemented":true,"kind":"function","modifiers":[],"name":"exp","nodeType":"FunctionDefinition","parameters":{"id":4806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4805,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":5229,"src":"7338:8:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4804,"name":"int256","nodeType":"ElementaryTypeName","src":"7338:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7337:10:46"},"returnParameters":{"id":4809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4808,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5229,"src":"7371:6:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4807,"name":"int256","nodeType":"ElementaryTypeName","src":"7371:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7370:8:46"},"scope":5858,"src":"7325:5379:46","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5300,"nodeType":"Block","src":"12888:753:46","statements":[{"assignments":[5240],"declarations":[{"constant":false,"id":5240,"mutability":"mutable","name":"logBase","nodeType":"VariableDeclaration","scope":5300,"src":"13118:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5239,"name":"int256","nodeType":"ElementaryTypeName","src":"13118:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5241,"nodeType":"VariableDeclarationStatement","src":"13118:14:46"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5242,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4585,"src":"13146:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5243,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5234,"src":"13166:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13146:24:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5245,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5234,"src":"13174:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5246,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4590,"src":"13181:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13174:24:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13146:52:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5264,"nodeType":"Block","src":"13253:53:46","statements":[{"expression":{"id":5262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5256,"name":"logBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5240,"src":"13267:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5258,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5234,"src":"13281:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5257,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5703,"src":"13277:3:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":5259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13277:9:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5260,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"13289:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13277:18:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13267:28:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5263,"nodeType":"ExpressionStatement","src":"13267:28:46"}]},"id":5265,"nodeType":"IfStatement","src":"13142:164:46","trueBody":{"id":5255,"nodeType":"Block","src":"13200:47:46","statements":[{"expression":{"id":5253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5249,"name":"logBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5240,"src":"13214:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5251,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5234,"src":"13231:4:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5250,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5857,"src":"13224:6:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":5252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13224:12:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13214:22:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5254,"nodeType":"ExpressionStatement","src":"13214:22:46"}]}},{"assignments":[5267],"declarations":[{"constant":false,"id":5267,"mutability":"mutable","name":"logArg","nodeType":"VariableDeclaration","scope":5300,"src":"13316:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5266,"name":"int256","nodeType":"ElementaryTypeName","src":"13316:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5268,"nodeType":"VariableDeclarationStatement","src":"13316:13:46"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5269,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4585,"src":"13343:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5270,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5232,"src":"13363:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13343:23:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5272,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5232,"src":"13370:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5273,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4590,"src":"13376:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13370:23:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13343:50:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5291,"nodeType":"Block","src":"13446:51:46","statements":[{"expression":{"id":5289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5283,"name":"logArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5267,"src":"13460:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5285,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5232,"src":"13473:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5284,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5703,"src":"13469:3:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":5286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13469:8:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5287,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"13480:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13469:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13460:26:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5290,"nodeType":"ExpressionStatement","src":"13460:26:46"}]},"id":5292,"nodeType":"IfStatement","src":"13339:158:46","trueBody":{"id":5282,"nodeType":"Block","src":"13395:45:46","statements":[{"expression":{"id":5280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5276,"name":"logArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5267,"src":"13409:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5278,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5232,"src":"13425:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5277,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5857,"src":"13418:6:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":5279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13418:11:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13409:20:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5281,"nodeType":"ExpressionStatement","src":"13409:20:46"}]}},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5293,"name":"logArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5267,"src":"13608:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5294,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"13617:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13608:15:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5296,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13607:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5297,"name":"logBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5240,"src":"13627:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13607:27:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5238,"id":5299,"nodeType":"Return","src":"13600:34:46"}]},"documentation":{"id":5230,"nodeType":"StructuredDocumentation","src":"12710:104:46","text":" @dev Logarithm (log(arg, base), with signed 18 decimal fixed point base and argument."},"id":5301,"implemented":true,"kind":"function","modifiers":[],"name":"log","nodeType":"FunctionDefinition","parameters":{"id":5235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5232,"mutability":"mutable","name":"arg","nodeType":"VariableDeclaration","scope":5301,"src":"12832:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5231,"name":"int256","nodeType":"ElementaryTypeName","src":"12832:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":5234,"mutability":"mutable","name":"base","nodeType":"VariableDeclaration","scope":5301,"src":"12844:11:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5233,"name":"int256","nodeType":"ElementaryTypeName","src":"12844:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"12831:25:46"},"returnParameters":{"id":5238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5237,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5301,"src":"12880:6:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5236,"name":"int256","nodeType":"ElementaryTypeName","src":"12880:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"12879:8:46"},"scope":5858,"src":"12819:822:46","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5337,"nodeType":"Block","src":"13799:292:46","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5310,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5304,"src":"13901:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13905:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13901:5:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5313,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"13908:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":5314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1295,"src":"13908:20:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5309,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"13892:8:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13892:37:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5316,"nodeType":"ExpressionStatement","src":"13892:37:46"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5317,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4585,"src":"13943:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5318,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5304,"src":"13963:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13943:21:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5320,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5304,"src":"13968:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5321,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4590,"src":"13972:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13968:21:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13943:46:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5335,"nodeType":"Block","src":"14047:38:46","statements":[{"expression":{"arguments":[{"id":5332,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5304,"src":"14072:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5331,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5703,"src":"14068:3:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":5333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14068:6:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5308,"id":5334,"nodeType":"Return","src":"14061:13:46"}]},"id":5336,"nodeType":"IfStatement","src":"13939:146:46","trueBody":{"id":5330,"nodeType":"Block","src":"13991:50:46","statements":[{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5325,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5304,"src":"14019:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5324,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5857,"src":"14012:6:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":5326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14012:9:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5327,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"14024:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14012:18:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5308,"id":5329,"nodeType":"Return","src":"14005:25:46"}]}}]},"documentation":{"id":5302,"nodeType":"StructuredDocumentation","src":"13647:94:46","text":" @dev Natural logarithm (ln(a)) with signed 18 decimal fixed point argument."},"id":5338,"implemented":true,"kind":"function","modifiers":[],"name":"ln","nodeType":"FunctionDefinition","parameters":{"id":5305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5304,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5338,"src":"13758:8:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5303,"name":"int256","nodeType":"ElementaryTypeName","src":"13758:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"13757:10:46"},"returnParameters":{"id":5308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5307,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5338,"src":"13791:6:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5306,"name":"int256","nodeType":"ElementaryTypeName","src":"13791:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"13790:8:46"},"scope":5858,"src":"13746:345:46","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5702,"nodeType":"Block","src":"14258:4906:46","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5346,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"14272:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5347,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"14276:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14272:10:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5361,"nodeType":"IfStatement","src":"14268:382:46","trueBody":{"id":5360,"nodeType":"Block","src":"14284:366:46","statements":[{"expression":{"components":[{"id":5357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"14611:27:46","subExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":5350,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"14617:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5351,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"14626:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14617:15:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5353,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"14616:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5354,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"14636:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14616:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5349,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5703,"src":"14612:3:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":5356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14612:26:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5358,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14610:29:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5345,"id":5359,"nodeType":"Return","src":"14603:36:46"}]}},{"assignments":[5363],"declarations":[{"constant":false,"id":5363,"mutability":"mutable","name":"sum","nodeType":"VariableDeclaration","scope":5702,"src":"15975:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5362,"name":"int256","nodeType":"ElementaryTypeName","src":"15975:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5365,"initialValue":{"hexValue":"30","id":5364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15988:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15975:14:46"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5366,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16003:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5369,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":5367,"name":"a0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4606,"src":"16008:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5368,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"16013:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16008:11:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16003:16:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5380,"nodeType":"IfStatement","src":"15999:114:46","trueBody":{"id":5379,"nodeType":"Block","src":"16021:92:46","statements":[{"expression":{"id":5373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5371,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16035:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":5372,"name":"a0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4606,"src":"16040:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16035:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5374,"nodeType":"ExpressionStatement","src":"16035:7:46"},{"expression":{"id":5377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5375,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"16093:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5376,"name":"x0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4603,"src":"16100:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16093:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5378,"nodeType":"ExpressionStatement","src":"16093:9:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5381,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16127:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5384,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":5382,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4612,"src":"16132:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5383,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"16137:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16132:11:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16127:16:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5395,"nodeType":"IfStatement","src":"16123:114:46","trueBody":{"id":5394,"nodeType":"Block","src":"16145:92:46","statements":[{"expression":{"id":5388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5386,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16159:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":5387,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4612,"src":"16164:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16159:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5389,"nodeType":"ExpressionStatement","src":"16159:7:46"},{"expression":{"id":5392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5390,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"16217:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5391,"name":"x1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4609,"src":"16224:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16217:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5393,"nodeType":"ExpressionStatement","src":"16217:9:46"}]}},{"expression":{"id":5398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5396,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"16368:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"313030","id":5397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16375:3:46","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"16368:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5399,"nodeType":"ExpressionStatement","src":"16368:10:46"},{"expression":{"id":5402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5400,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16388:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"313030","id":5401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16393:3:46","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"16388:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5403,"nodeType":"ExpressionStatement","src":"16388:8:46"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5404,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16523:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5405,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"16528:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16523:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5421,"nodeType":"IfStatement","src":"16519:82:46","trueBody":{"id":5420,"nodeType":"Block","src":"16532:69:46","statements":[{"expression":{"id":5414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5407,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16546:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5408,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16551:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5409,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"16555:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16551:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5411,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16550:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5412,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"16565:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16550:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16546:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5415,"nodeType":"ExpressionStatement","src":"16546:21:46"},{"expression":{"id":5418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5416,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"16581:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5417,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4615,"src":"16588:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16581:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5419,"nodeType":"ExpressionStatement","src":"16581:9:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5422,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16615:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5423,"name":"a3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"16620:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16615:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5439,"nodeType":"IfStatement","src":"16611:82:46","trueBody":{"id":5438,"nodeType":"Block","src":"16624:69:46","statements":[{"expression":{"id":5432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5425,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16638:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5426,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16643:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5427,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"16647:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16643:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5429,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16642:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5430,"name":"a3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4624,"src":"16657:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16642:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16638:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5433,"nodeType":"ExpressionStatement","src":"16638:21:46"},{"expression":{"id":5436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5434,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"16673:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5435,"name":"x3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4621,"src":"16680:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16673:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5437,"nodeType":"ExpressionStatement","src":"16673:9:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5440,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16707:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5441,"name":"a4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4630,"src":"16712:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16707:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5457,"nodeType":"IfStatement","src":"16703:82:46","trueBody":{"id":5456,"nodeType":"Block","src":"16716:69:46","statements":[{"expression":{"id":5450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5443,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16730:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5444,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16735:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5445,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"16739:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16735:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5447,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16734:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5448,"name":"a4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4630,"src":"16749:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16734:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16730:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5451,"nodeType":"ExpressionStatement","src":"16730:21:46"},{"expression":{"id":5454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5452,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"16765:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5453,"name":"x4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4627,"src":"16772:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16765:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5455,"nodeType":"ExpressionStatement","src":"16765:9:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5458,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16799:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5459,"name":"a5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"16804:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16799:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5475,"nodeType":"IfStatement","src":"16795:82:46","trueBody":{"id":5474,"nodeType":"Block","src":"16808:69:46","statements":[{"expression":{"id":5468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5461,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16822:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5462,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16827:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5463,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"16831:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16827:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5465,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16826:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5466,"name":"a5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"16841:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16826:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16822:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5469,"nodeType":"ExpressionStatement","src":"16822:21:46"},{"expression":{"id":5472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5470,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"16857:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5471,"name":"x5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4633,"src":"16864:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16857:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5473,"nodeType":"ExpressionStatement","src":"16857:9:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5476,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16891:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5477,"name":"a6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4642,"src":"16896:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16891:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5493,"nodeType":"IfStatement","src":"16887:82:46","trueBody":{"id":5492,"nodeType":"Block","src":"16900:69:46","statements":[{"expression":{"id":5486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5479,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16914:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16919:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5481,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"16923:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16919:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5483,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16918:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5484,"name":"a6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4642,"src":"16933:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16918:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16914:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5487,"nodeType":"ExpressionStatement","src":"16914:21:46"},{"expression":{"id":5490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5488,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"16949:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5489,"name":"x6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4639,"src":"16956:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16949:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5491,"nodeType":"ExpressionStatement","src":"16949:9:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5494,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"16983:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5495,"name":"a7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4648,"src":"16988:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16983:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5511,"nodeType":"IfStatement","src":"16979:82:46","trueBody":{"id":5510,"nodeType":"Block","src":"16992:69:46","statements":[{"expression":{"id":5504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5497,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"17006:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5498,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"17011:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5499,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"17015:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17011:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5501,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17010:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5502,"name":"a7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4648,"src":"17025:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17010:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17006:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5505,"nodeType":"ExpressionStatement","src":"17006:21:46"},{"expression":{"id":5508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5506,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"17041:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5507,"name":"x7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4645,"src":"17048:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17041:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5509,"nodeType":"ExpressionStatement","src":"17041:9:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5512,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"17075:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5513,"name":"a8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4654,"src":"17080:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17075:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5529,"nodeType":"IfStatement","src":"17071:82:46","trueBody":{"id":5528,"nodeType":"Block","src":"17084:69:46","statements":[{"expression":{"id":5522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5515,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"17098:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5516,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"17103:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5517,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"17107:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17103:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5519,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17102:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5520,"name":"a8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4654,"src":"17117:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17102:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17098:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5523,"nodeType":"ExpressionStatement","src":"17098:21:46"},{"expression":{"id":5526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5524,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"17133:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5525,"name":"x8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4651,"src":"17140:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17133:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5527,"nodeType":"ExpressionStatement","src":"17133:9:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5530,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"17167:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5531,"name":"a9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4660,"src":"17172:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17167:7:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5547,"nodeType":"IfStatement","src":"17163:82:46","trueBody":{"id":5546,"nodeType":"Block","src":"17176:69:46","statements":[{"expression":{"id":5540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5533,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"17190:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5534,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"17195:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5535,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"17199:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17195:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5537,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17194:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5538,"name":"a9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4660,"src":"17209:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17194:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17190:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5541,"nodeType":"ExpressionStatement","src":"17190:21:46"},{"expression":{"id":5544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5542,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"17225:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5543,"name":"x9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4657,"src":"17232:2:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17225:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5545,"nodeType":"ExpressionStatement","src":"17225:9:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5548,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"17259:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5549,"name":"a10","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4666,"src":"17264:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17259:8:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5565,"nodeType":"IfStatement","src":"17255:85:46","trueBody":{"id":5564,"nodeType":"Block","src":"17269:71:46","statements":[{"expression":{"id":5558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5551,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"17283:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5552,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"17288:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5553,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"17292:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17288:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5555,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17287:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5556,"name":"a10","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4666,"src":"17302:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17287:18:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17283:22:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5559,"nodeType":"ExpressionStatement","src":"17283:22:46"},{"expression":{"id":5562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5560,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"17319:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5561,"name":"x10","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4663,"src":"17326:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17319:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5563,"nodeType":"ExpressionStatement","src":"17319:10:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5566,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"17354:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5567,"name":"a11","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4672,"src":"17359:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17354:8:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5583,"nodeType":"IfStatement","src":"17350:85:46","trueBody":{"id":5582,"nodeType":"Block","src":"17364:71:46","statements":[{"expression":{"id":5576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5569,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"17378:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5570,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"17383:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5571,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"17387:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17383:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5573,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17382:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5574,"name":"a11","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4672,"src":"17397:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17382:18:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17378:22:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5577,"nodeType":"ExpressionStatement","src":"17378:22:46"},{"expression":{"id":5580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5578,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"17414:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5579,"name":"x11","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4669,"src":"17421:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17414:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5581,"nodeType":"ExpressionStatement","src":"17414:10:46"}]}},{"assignments":[5585],"declarations":[{"constant":false,"id":5585,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":5702,"src":"17937:8:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5584,"name":"int256","nodeType":"ElementaryTypeName","src":"17937:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5598,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5586,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"17950:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5587,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"17954:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17950:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5589,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17949:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5590,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"17964:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17949:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5592,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17948:23:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5593,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5341,"src":"17975:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5594,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"17979:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17975:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5596,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17974:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17948:38:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"17937:49:46"},{"assignments":[5600],"declarations":[{"constant":false,"id":5600,"mutability":"mutable","name":"z_squared","nodeType":"VariableDeclaration","scope":5702,"src":"17996:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5599,"name":"int256","nodeType":"ElementaryTypeName","src":"17996:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5607,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5601,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5585,"src":"18016:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5602,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5585,"src":"18020:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18016:5:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5604,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18015:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5605,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"18025:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18015:16:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"17996:35:46"},{"assignments":[5609],"declarations":[{"constant":false,"id":5609,"mutability":"mutable","name":"num","nodeType":"VariableDeclaration","scope":5702,"src":"18112:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5608,"name":"int256","nodeType":"ElementaryTypeName","src":"18112:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5611,"initialValue":{"id":5610,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5585,"src":"18125:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"18112:14:46"},{"assignments":[5613],"declarations":[{"constant":false,"id":5613,"mutability":"mutable","name":"seriesSum","nodeType":"VariableDeclaration","scope":5702,"src":"18240:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5612,"name":"int256","nodeType":"ElementaryTypeName","src":"18240:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5615,"initialValue":{"id":5614,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"18259:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"18240:22:46"},{"expression":{"id":5623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5616,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"18333:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5617,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"18340:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5618,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5600,"src":"18346:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18340:15:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5620,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18339:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5621,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"18359:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18339:26:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18333:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5624,"nodeType":"ExpressionStatement","src":"18333:32:46"},{"expression":{"id":5629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5625,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5613,"src":"18375:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5626,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"18388:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":5627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18394:1:46","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"18388:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18375:20:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5630,"nodeType":"ExpressionStatement","src":"18375:20:46"},{"expression":{"id":5638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5631,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"18406:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5632,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"18413:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5633,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5600,"src":"18419:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18413:15:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5635,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18412:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5636,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"18432:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18412:26:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18406:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5639,"nodeType":"ExpressionStatement","src":"18406:32:46"},{"expression":{"id":5644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5640,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5613,"src":"18448:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5641,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"18461:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"35","id":5642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18467:1:46","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"18461:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18448:20:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5645,"nodeType":"ExpressionStatement","src":"18448:20:46"},{"expression":{"id":5653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5646,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"18479:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5647,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"18486:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5648,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5600,"src":"18492:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18486:15:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5650,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18485:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5651,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"18505:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18485:26:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18479:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5654,"nodeType":"ExpressionStatement","src":"18479:32:46"},{"expression":{"id":5659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5655,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5613,"src":"18521:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5656,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"18534:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"37","id":5657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18540:1:46","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"18534:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18521:20:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5660,"nodeType":"ExpressionStatement","src":"18521:20:46"},{"expression":{"id":5668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5661,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"18552:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5662,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"18559:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5663,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5600,"src":"18565:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18559:15:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5665,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18558:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5666,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"18578:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18558:26:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18552:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5669,"nodeType":"ExpressionStatement","src":"18552:32:46"},{"expression":{"id":5674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5670,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5613,"src":"18594:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5671,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"18607:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"39","id":5672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18613:1:46","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"18607:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18594:20:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5675,"nodeType":"ExpressionStatement","src":"18594:20:46"},{"expression":{"id":5683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5676,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"18625:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5677,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"18632:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5678,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5600,"src":"18638:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18632:15:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5680,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18631:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5681,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"18651:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18631:26:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18625:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5684,"nodeType":"ExpressionStatement","src":"18625:32:46"},{"expression":{"id":5689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5685,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5613,"src":"18667:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5686,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"18680:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3131","id":5687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18686:2:46","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"src":"18680:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18667:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5690,"nodeType":"ExpressionStatement","src":"18667:21:46"},{"expression":{"id":5693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5691,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5613,"src":"18847:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"32","id":5692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18860:1:46","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"18847:14:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5694,"nodeType":"ExpressionStatement","src":"18847:14:46"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5695,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"19135:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5696,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5613,"src":"19141:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19135:15:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5698,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19134:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":5699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19154:3:46","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"19134:23:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5345,"id":5701,"nodeType":"Return","src":"19127:30:46"}]},"documentation":{"id":5339,"nodeType":"StructuredDocumentation","src":"14097:103:46","text":" @dev Internal natural logarithm (ln(a)) with signed 18 decimal fixed point argument."},"id":5703,"implemented":true,"kind":"function","modifiers":[],"name":"_ln","nodeType":"FunctionDefinition","parameters":{"id":5342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5341,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5703,"src":"14218:8:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5340,"name":"int256","nodeType":"ElementaryTypeName","src":"14218:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"14217:10:46"},"returnParameters":{"id":5345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5344,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5703,"src":"14250:6:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5343,"name":"int256","nodeType":"ElementaryTypeName","src":"14250:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"14249:8:46"},"scope":5858,"src":"14205:4959:46","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":5856,"nodeType":"Block","src":"19486:1658:46","statements":[{"expression":{"id":5713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5711,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5706,"src":"19700:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"id":5712,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"19705:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19700:11:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5714,"nodeType":"ExpressionStatement","src":"19700:11:46"},{"assignments":[5716],"declarations":[{"constant":false,"id":5716,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":5856,"src":"20072:8:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5715,"name":"int256","nodeType":"ElementaryTypeName","src":"20072:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5729,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5717,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5706,"src":"20085:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5718,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4573,"src":"20089:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20085:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5720,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20084:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5721,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4573,"src":"20099:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20084:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5723,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20083:23:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5724,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5706,"src":"20110:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5725,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4573,"src":"20114:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20110:10:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5727,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20109:12:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20083:38:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20072:49:46"},{"assignments":[5731],"declarations":[{"constant":false,"id":5731,"mutability":"mutable","name":"z_squared","nodeType":"VariableDeclaration","scope":5856,"src":"20131:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5730,"name":"int256","nodeType":"ElementaryTypeName","src":"20131:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5738,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5732,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5716,"src":"20151:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5733,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5716,"src":"20155:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20151:5:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20150:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5736,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4573,"src":"20160:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20150:16:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20131:35:46"},{"assignments":[5740],"declarations":[{"constant":false,"id":5740,"mutability":"mutable","name":"num","nodeType":"VariableDeclaration","scope":5856,"src":"20247:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5739,"name":"int256","nodeType":"ElementaryTypeName","src":"20247:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5742,"initialValue":{"id":5741,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5716,"src":"20260:1:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20247:14:46"},{"assignments":[5744],"declarations":[{"constant":false,"id":5744,"mutability":"mutable","name":"seriesSum","nodeType":"VariableDeclaration","scope":5856,"src":"20375:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5743,"name":"int256","nodeType":"ElementaryTypeName","src":"20375:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5746,"initialValue":{"id":5745,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20394:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20375:22:46"},{"expression":{"id":5754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5747,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20468:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5748,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20475:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5749,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5731,"src":"20481:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20475:15:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5751,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20474:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5752,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4573,"src":"20494:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20474:26:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20468:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5755,"nodeType":"ExpressionStatement","src":"20468:32:46"},{"expression":{"id":5760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5756,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5744,"src":"20510:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5757,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20523:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":5758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20529:1:46","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"20523:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20510:20:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5761,"nodeType":"ExpressionStatement","src":"20510:20:46"},{"expression":{"id":5769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5762,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20541:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5763,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20548:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5764,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5731,"src":"20554:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20548:15:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5766,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20547:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5767,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4573,"src":"20567:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20547:26:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20541:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5770,"nodeType":"ExpressionStatement","src":"20541:32:46"},{"expression":{"id":5775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5771,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5744,"src":"20583:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5772,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20596:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"35","id":5773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20602:1:46","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"20596:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20583:20:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5776,"nodeType":"ExpressionStatement","src":"20583:20:46"},{"expression":{"id":5784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5777,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20614:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5778,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20621:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5779,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5731,"src":"20627:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20621:15:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5781,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20620:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5782,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4573,"src":"20640:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20620:26:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20614:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5785,"nodeType":"ExpressionStatement","src":"20614:32:46"},{"expression":{"id":5790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5786,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5744,"src":"20656:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5787,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20669:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"37","id":5788,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20675:1:46","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"20669:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20656:20:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5791,"nodeType":"ExpressionStatement","src":"20656:20:46"},{"expression":{"id":5799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5792,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20687:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5793,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20694:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5794,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5731,"src":"20700:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20694:15:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5796,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20693:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5797,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4573,"src":"20713:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20693:26:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20687:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5800,"nodeType":"ExpressionStatement","src":"20687:32:46"},{"expression":{"id":5805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5801,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5744,"src":"20729:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5802,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20742:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"39","id":5803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20748:1:46","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"20742:7:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20729:20:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5806,"nodeType":"ExpressionStatement","src":"20729:20:46"},{"expression":{"id":5814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5807,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20760:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5808,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20767:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5809,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5731,"src":"20773:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20767:15:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5811,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20766:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5812,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4573,"src":"20786:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20766:26:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20760:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5815,"nodeType":"ExpressionStatement","src":"20760:32:46"},{"expression":{"id":5820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5816,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5744,"src":"20802:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5817,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20815:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3131","id":5818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20821:2:46","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"src":"20815:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20802:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5821,"nodeType":"ExpressionStatement","src":"20802:21:46"},{"expression":{"id":5829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5822,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20834:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5823,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20841:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5824,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5731,"src":"20847:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20841:15:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5826,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20840:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5827,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4573,"src":"20860:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20840:26:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20834:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5830,"nodeType":"ExpressionStatement","src":"20834:32:46"},{"expression":{"id":5835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5831,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5744,"src":"20876:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5832,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20889:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3133","id":5833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20895:2:46","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"13"},"src":"20889:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20876:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5836,"nodeType":"ExpressionStatement","src":"20876:21:46"},{"expression":{"id":5844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5837,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20908:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5838,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20915:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5839,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5731,"src":"20921:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20915:15:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5841,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20914:17:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5842,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4573,"src":"20934:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20914:26:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20908:32:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5845,"nodeType":"ExpressionStatement","src":"20908:32:46"},{"expression":{"id":5850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5846,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5744,"src":"20950:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5847,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"20963:3:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3135","id":5848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20969:2:46","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"15"},"src":"20963:8:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20950:21:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5851,"nodeType":"ExpressionStatement","src":"20950:21:46"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5852,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5744,"src":"21124:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":5853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21136:1:46","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"21124:13:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5710,"id":5855,"nodeType":"Return","src":"21117:20:46"}]},"documentation":{"id":5704,"nodeType":"StructuredDocumentation","src":"19170:255:46","text":" @dev Intrnal high precision (36 decimal places) natural logarithm (ln(x)) with signed 18 decimal fixed point argument,\n for x close to one.\n Should only be used if x is between LN_36_LOWER_BOUND and LN_36_UPPER_BOUND."},"id":5857,"implemented":true,"kind":"function","modifiers":[],"name":"_ln_36","nodeType":"FunctionDefinition","parameters":{"id":5707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5706,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":5857,"src":"19446:8:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5705,"name":"int256","nodeType":"ElementaryTypeName","src":"19446:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19445:10:46"},"returnParameters":{"id":5710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5709,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5857,"src":"19478:6:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5708,"name":"int256","nodeType":"ElementaryTypeName","src":"19478:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19477:8:46"},"scope":5858,"src":"19430:1714:46","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":5859,"src":"1681:19465:46"}],"src":"1094:20053:46"},"id":46},"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","exportedSymbols":{"Math":[6170]},"id":6171,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5860,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:47"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":5861,"nodeType":"ImportDirective","scope":6171,"sourceUnit":1744,"src":"58:90:47","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":5862,"nodeType":"StructuredDocumentation","src":"150:139:47","text":" @dev Wrappers over Solidity's arithmetic operations with added overflow checks.\n Adapted from OpenZeppelin's SafeMath library."},"fullyImplemented":true,"id":6170,"linearizedBaseContracts":[6170],"name":"Math","nodeType":"ContractDefinition","nodes":[{"body":{"id":5884,"nodeType":"Block","src":"440:56:47","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5870,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5865,"src":"457:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"461:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"457:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":5880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"486:2:47","subExpression":{"id":5879,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5865,"src":"487:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5878,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"478:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5877,"name":"uint256","nodeType":"ElementaryTypeName","src":"478:7:47","typeDescriptions":{}}},"id":5881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"478:11:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"457:32:47","trueExpression":{"arguments":[{"id":5875,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5865,"src":"473:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5874,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"465:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5873,"name":"uint256","nodeType":"ElementaryTypeName","src":"465:7:47","typeDescriptions":{}}},"id":5876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"465:10:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5869,"id":5883,"nodeType":"Return","src":"450:39:47"}]},"documentation":{"id":5863,"nodeType":"StructuredDocumentation","src":"309:71:47","text":" @dev Returns the absolute value of a signed integer."},"id":5885,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nodeType":"FunctionDefinition","parameters":{"id":5866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5865,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5885,"src":"398:8:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5864,"name":"int256","nodeType":"ElementaryTypeName","src":"398:6:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"397:10:47"},"returnParameters":{"id":5869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5868,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5885,"src":"431:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5867,"name":"uint256","nodeType":"ElementaryTypeName","src":"431:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"430:9:47"},"scope":6170,"src":"385:111:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5911,"nodeType":"Block","src":"679:99:47","statements":[{"assignments":[5896],"declarations":[{"constant":false,"id":5896,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5911,"src":"689:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5895,"name":"uint256","nodeType":"ElementaryTypeName","src":"689:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5900,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5897,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5888,"src":"701:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5898,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5890,"src":"705:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"701:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"689:17:47"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5902,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5896,"src":"725:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5903,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5888,"src":"730:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"725:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5905,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"733:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":5906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1265,"src":"733:19:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5901,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"716:8:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"716:37:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5908,"nodeType":"ExpressionStatement","src":"716:37:47"},{"expression":{"id":5909,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5896,"src":"770:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5894,"id":5910,"nodeType":"Return","src":"763:8:47"}]},"documentation":{"id":5886,"nodeType":"StructuredDocumentation","src":"502:105:47","text":" @dev Returns the addition of two unsigned integers of 256 bits, reverting on overflow."},"id":5912,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":5891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5888,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5912,"src":"625:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5887,"name":"uint256","nodeType":"ElementaryTypeName","src":"625:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5890,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5912,"src":"636:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5889,"name":"uint256","nodeType":"ElementaryTypeName","src":"636:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"624:22:47"},"returnParameters":{"id":5894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5893,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5912,"src":"670:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5892,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"669:9:47"},"scope":6170,"src":"612:166:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5952,"nodeType":"Block","src":"944:130:47","statements":[{"assignments":[5923],"declarations":[{"constant":false,"id":5923,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5952,"src":"954:8:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5922,"name":"int256","nodeType":"ElementaryTypeName","src":"954:6:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5927,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5924,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"965:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5925,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5917,"src":"969:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"965:5:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"954:16:47"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5929,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5917,"src":"990:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":5930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"995:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"990:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5932,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5923,"src":"1000:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5933,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"1005:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1000:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"990:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5936,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"989:18:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5937,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5917,"src":"1012:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":5938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1016:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1012:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5940,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5923,"src":"1021:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5941,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"1025:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1021:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1012:14:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5944,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1011:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"989:38:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5946,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"1029:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":5947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1265,"src":"1029:19:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5928,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"980:8:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"980:69:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5949,"nodeType":"ExpressionStatement","src":"980:69:47"},{"expression":{"id":5950,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5923,"src":"1066:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5921,"id":5951,"nodeType":"Return","src":"1059:8:47"}]},"documentation":{"id":5913,"nodeType":"StructuredDocumentation","src":"784:91:47","text":" @dev Returns the addition of two signed integers, reverting on overflow."},"id":5953,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":5918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5915,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5953,"src":"893:8:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5914,"name":"int256","nodeType":"ElementaryTypeName","src":"893:6:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":5917,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5953,"src":"903:8:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5916,"name":"int256","nodeType":"ElementaryTypeName","src":"903:6:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"892:20:47"},"returnParameters":{"id":5921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5920,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5953,"src":"936:6:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5919,"name":"int256","nodeType":"ElementaryTypeName","src":"936:6:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"935:8:47"},"scope":6170,"src":"880:194:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5979,"nodeType":"Block","src":"1260:99:47","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5964,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5958,"src":"1279:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":5965,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5956,"src":"1284:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1279:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5967,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"1287:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":5968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1268,"src":"1287:19:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5963,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"1270:8:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1270:37:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5970,"nodeType":"ExpressionStatement","src":"1270:37:47"},{"assignments":[5972],"declarations":[{"constant":false,"id":5972,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":5979,"src":"1317:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5971,"name":"uint256","nodeType":"ElementaryTypeName","src":"1317:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5976,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5973,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5956,"src":"1329:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5974,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5958,"src":"1333:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1329:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1317:17:47"},{"expression":{"id":5977,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5972,"src":"1351:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5962,"id":5978,"nodeType":"Return","src":"1344:8:47"}]},"documentation":{"id":5954,"nodeType":"StructuredDocumentation","src":"1080:108:47","text":" @dev Returns the subtraction of two unsigned integers of 256 bits, reverting on overflow."},"id":5980,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":5959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5956,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5980,"src":"1206:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5955,"name":"uint256","nodeType":"ElementaryTypeName","src":"1206:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5958,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5980,"src":"1217:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5957,"name":"uint256","nodeType":"ElementaryTypeName","src":"1217:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1205:22:47"},"returnParameters":{"id":5962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5961,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5980,"src":"1251:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5960,"name":"uint256","nodeType":"ElementaryTypeName","src":"1251:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1250:9:47"},"scope":6170,"src":"1193:166:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6020,"nodeType":"Block","src":"1528:130:47","statements":[{"assignments":[5991],"declarations":[{"constant":false,"id":5991,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":6020,"src":"1538:8:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5990,"name":"int256","nodeType":"ElementaryTypeName","src":"1538:6:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5995,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5992,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5983,"src":"1549:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5993,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5985,"src":"1553:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1549:5:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"1538:16:47"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5997,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5985,"src":"1574:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":5998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1579:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1574:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6000,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5991,"src":"1584:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":6001,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5983,"src":"1589:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1584:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1574:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":6004,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1573:18:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6005,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5985,"src":"1596:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":6006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1600:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1596:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6008,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5991,"src":"1605:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6009,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5983,"src":"1609:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1605:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1596:14:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":6012,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1595:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1573:38:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6014,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"1613:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":6015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1268,"src":"1613:19:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5996,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"1564:8:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1564:69:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6017,"nodeType":"ExpressionStatement","src":"1564:69:47"},{"expression":{"id":6018,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5991,"src":"1650:1:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5989,"id":6019,"nodeType":"Return","src":"1643:8:47"}]},"documentation":{"id":5981,"nodeType":"StructuredDocumentation","src":"1365:94:47","text":" @dev Returns the subtraction of two signed integers, reverting on overflow."},"id":6021,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":5986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5983,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6021,"src":"1477:8:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5982,"name":"int256","nodeType":"ElementaryTypeName","src":"1477:6:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":5985,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":6021,"src":"1487:8:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5984,"name":"int256","nodeType":"ElementaryTypeName","src":"1487:6:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1476:20:47"},"returnParameters":{"id":5989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5988,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6021,"src":"1520:6:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5987,"name":"int256","nodeType":"ElementaryTypeName","src":"1520:6:47","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1519:8:47"},"scope":6170,"src":"1464:194:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6038,"nodeType":"Block","src":"1807:38:47","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6031,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6024,"src":"1824:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6032,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6026,"src":"1829:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1824:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":6035,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6026,"src":"1837:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1824:14:47","trueExpression":{"id":6034,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6024,"src":"1833:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6030,"id":6037,"nodeType":"Return","src":"1817:21:47"}]},"documentation":{"id":6022,"nodeType":"StructuredDocumentation","src":"1664:71:47","text":" @dev Returns the largest of two numbers of 256 bits."},"id":6039,"implemented":true,"kind":"function","modifiers":[],"name":"max","nodeType":"FunctionDefinition","parameters":{"id":6027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6024,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6039,"src":"1753:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6023,"name":"uint256","nodeType":"ElementaryTypeName","src":"1753:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6026,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":6039,"src":"1764:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6025,"name":"uint256","nodeType":"ElementaryTypeName","src":"1764:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1752:22:47"},"returnParameters":{"id":6030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6029,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6039,"src":"1798:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6028,"name":"uint256","nodeType":"ElementaryTypeName","src":"1798:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1797:9:47"},"scope":6170,"src":"1740:105:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6056,"nodeType":"Block","src":"1995:37:47","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6049,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"2012:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6050,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6044,"src":"2016:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2012:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":6053,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6044,"src":"2024:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2012:13:47","trueExpression":{"id":6052,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6042,"src":"2020:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6048,"id":6055,"nodeType":"Return","src":"2005:20:47"}]},"documentation":{"id":6040,"nodeType":"StructuredDocumentation","src":"1851:72:47","text":" @dev Returns the smallest of two numbers of 256 bits."},"id":6057,"implemented":true,"kind":"function","modifiers":[],"name":"min","nodeType":"FunctionDefinition","parameters":{"id":6045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6042,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6057,"src":"1941:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6041,"name":"uint256","nodeType":"ElementaryTypeName","src":"1941:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6044,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":6057,"src":"1952:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6043,"name":"uint256","nodeType":"ElementaryTypeName","src":"1952:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1940:22:47"},"returnParameters":{"id":6048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6047,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6057,"src":"1986:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6046,"name":"uint256","nodeType":"ElementaryTypeName","src":"1986:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1985:9:47"},"scope":6170,"src":"1928:104:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6088,"nodeType":"Block","src":"2105:113:47","statements":[{"assignments":[6067],"declarations":[{"constant":false,"id":6067,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":6088,"src":"2115:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6066,"name":"uint256","nodeType":"ElementaryTypeName","src":"2115:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6071,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6068,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6059,"src":"2127:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6069,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6061,"src":"2131:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2127:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2115:17:47"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6073,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6059,"src":"2151:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2156:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2151:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6076,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6067,"src":"2161:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6077,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6059,"src":"2165:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2161:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6079,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6061,"src":"2170:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2161:10:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2151:20:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6082,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"2173:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":6083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MUL_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1274,"src":"2173:19:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6072,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"2142:8:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2142:51:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6085,"nodeType":"ExpressionStatement","src":"2142:51:47"},{"expression":{"id":6086,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6067,"src":"2210:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6065,"id":6087,"nodeType":"Return","src":"2203:8:47"}]},"id":6089,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":6062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6059,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6089,"src":"2051:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6058,"name":"uint256","nodeType":"ElementaryTypeName","src":"2051:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6061,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":6089,"src":"2062:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6060,"name":"uint256","nodeType":"ElementaryTypeName","src":"2062:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2050:22:47"},"returnParameters":{"id":6065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6064,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6089,"src":"2096:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6063,"name":"uint256","nodeType":"ElementaryTypeName","src":"2096:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2095:9:47"},"scope":6170,"src":"2038:180:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6111,"nodeType":"Block","src":"2335:61:47","statements":[{"expression":{"condition":{"id":6100,"name":"roundUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6095,"src":"2352:7:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":6106,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6091,"src":"2384:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6107,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6093,"src":"2387:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6105,"name":"divDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6134,"src":"2376:7:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2376:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2352:37:47","trueExpression":{"arguments":[{"id":6102,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6091,"src":"2368:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6103,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6093,"src":"2371:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6101,"name":"divUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6169,"src":"2362:5:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2362:11:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6099,"id":6110,"nodeType":"Return","src":"2345:44:47"}]},"id":6112,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":6096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6091,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6112,"src":"2246:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6090,"name":"uint256","nodeType":"ElementaryTypeName","src":"2246:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6093,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":6112,"src":"2265:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6092,"name":"uint256","nodeType":"ElementaryTypeName","src":"2265:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6095,"mutability":"mutable","name":"roundUp","nodeType":"VariableDeclaration","scope":6112,"src":"2284:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6094,"name":"bool","nodeType":"ElementaryTypeName","src":"2284:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2236:66:47"},"returnParameters":{"id":6099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6098,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6112,"src":"2326:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6097,"name":"uint256","nodeType":"ElementaryTypeName","src":"2326:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2325:9:47"},"scope":6170,"src":"2224:172:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6133,"nodeType":"Block","src":"2473:77:47","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6122,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6116,"src":"2492:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2497:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2492:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6125,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"2500:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":6126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1277,"src":"2500:20:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6121,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"2483:8:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2483:38:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6128,"nodeType":"ExpressionStatement","src":"2483:38:47"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6129,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6114,"src":"2538:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6130,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6116,"src":"2542:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2538:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6120,"id":6132,"nodeType":"Return","src":"2531:12:47"}]},"id":6134,"implemented":true,"kind":"function","modifiers":[],"name":"divDown","nodeType":"FunctionDefinition","parameters":{"id":6117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6114,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6134,"src":"2419:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6113,"name":"uint256","nodeType":"ElementaryTypeName","src":"2419:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6116,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":6134,"src":"2430:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6115,"name":"uint256","nodeType":"ElementaryTypeName","src":"2430:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2418:22:47"},"returnParameters":{"id":6120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6119,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6134,"src":"2464:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6118,"name":"uint256","nodeType":"ElementaryTypeName","src":"2464:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2463:9:47"},"scope":6170,"src":"2402:148:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6168,"nodeType":"Block","src":"2625:163:47","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6144,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6138,"src":"2644:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2649:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2644:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6147,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"2652:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":6148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1277,"src":"2652:20:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6143,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"2635:8:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2635:38:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6150,"nodeType":"ExpressionStatement","src":"2635:38:47"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6151,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6136,"src":"2688:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2693:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2688:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6166,"nodeType":"Block","src":"2735:47:47","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2756:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6158,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6136,"src":"2761:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2765:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2761:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6161,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2760:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6162,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6138,"src":"2770:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2760:11:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2756:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6142,"id":6165,"nodeType":"Return","src":"2749:22:47"}]},"id":6167,"nodeType":"IfStatement","src":"2684:98:47","trueBody":{"id":6156,"nodeType":"Block","src":"2696:33:47","statements":[{"expression":{"hexValue":"30","id":6154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2717:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":6142,"id":6155,"nodeType":"Return","src":"2710:8:47"}]}}]},"id":6169,"implemented":true,"kind":"function","modifiers":[],"name":"divUp","nodeType":"FunctionDefinition","parameters":{"id":6139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6136,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6169,"src":"2571:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6135,"name":"uint256","nodeType":"ElementaryTypeName","src":"2571:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6138,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":6169,"src":"2582:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6137,"name":"uint256","nodeType":"ElementaryTypeName","src":"2582:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2570:22:47"},"returnParameters":{"id":6142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6141,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6169,"src":"2616:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6140,"name":"uint256","nodeType":"ElementaryTypeName","src":"2616:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2615:9:47"},"scope":6170,"src":"2556:232:47","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6171,"src":"290:2500:47"}],"src":"33:2758:47"},"id":47},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","exportedSymbols":{"Address":[6337]},"id":6338,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6172,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"254:23:48"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":6173,"nodeType":"ImportDirective","scope":6338,"sourceUnit":1744,"src":"279:90:48","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":6174,"nodeType":"StructuredDocumentation","src":"371:67:48","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":6337,"linearizedBaseContracts":[6337],"name":"Address","nodeType":"ContractDefinition","nodes":[{"body":{"id":6190,"nodeType":"Block","src":"1097:367:48","statements":[{"assignments":[6183],"declarations":[{"constant":false,"id":6183,"mutability":"mutable","name":"size","nodeType":"VariableDeclaration","scope":6190,"src":"1294:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6182,"name":"uint256","nodeType":"ElementaryTypeName","src":"1294:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6184,"nodeType":"VariableDeclarationStatement","src":"1294:12:48"},{"AST":{"nodeType":"YulBlock","src":"1381:52:48","statements":[{"nodeType":"YulAssignment","src":"1395:28:48","value":{"arguments":[{"name":"account","nodeType":"YulIdentifier","src":"1415:7:48"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"1403:11:48"},"nodeType":"YulFunctionCall","src":"1403:20:48"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1395:4:48"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":6177,"isOffset":false,"isSlot":false,"src":"1415:7:48","valueSize":1},{"declaration":6183,"isOffset":false,"isSlot":false,"src":"1395:4:48","valueSize":1}],"id":6185,"nodeType":"InlineAssembly","src":"1372:61:48"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6186,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6183,"src":"1449:4:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1456:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1449:8:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6181,"id":6189,"nodeType":"Return","src":"1442:15:48"}]},"documentation":{"id":6175,"nodeType":"StructuredDocumentation","src":"461:565:48","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="},"id":6191,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nodeType":"FunctionDefinition","parameters":{"id":6178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6177,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":6191,"src":"1051:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6176,"name":"address","nodeType":"ElementaryTypeName","src":"1051:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1050:17:48"},"returnParameters":{"id":6181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6180,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6191,"src":"1091:4:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6179,"name":"bool","nodeType":"ElementaryTypeName","src":"1091:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1090:6:48"},"scope":6337,"src":"1031:433:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6226,"nodeType":"Block","src":"2492:298:48","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":6202,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2519:4:48","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$6337","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$6337","typeString":"library Address"}],"id":6201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2511:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6200,"name":"address","nodeType":"ElementaryTypeName","src":"2511:7:48","typeDescriptions":{}}},"id":6203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2511:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2511:21:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6205,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6196,"src":"2536:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2511:31:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6207,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"2544:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":6208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADDRESS_INSUFFICIENT_BALANCE","nodeType":"MemberAccess","referencedDeclaration":1565,"src":"2544:35:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6199,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"2502:8:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2502:78:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6210,"nodeType":"ExpressionStatement","src":"2502:78:48"},{"assignments":[6212,null],"declarations":[{"constant":false,"id":6212,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":6226,"src":"2669:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6211,"name":"bool","nodeType":"ElementaryTypeName","src":"2669:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":6219,"initialValue":{"arguments":[{"hexValue":"","id":6217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2719:2:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":6213,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6194,"src":"2687:9:48","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":6214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2687:14:48","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":6216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":6215,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6196,"src":"2710:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2687:31:48","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":6218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2687:35:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2668:54:48"},{"expression":{"arguments":[{"id":6221,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6212,"src":"2741:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6222,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"2750:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":6223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADDRESS_CANNOT_SEND_VALUE","nodeType":"MemberAccess","referencedDeclaration":1568,"src":"2750:32:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6220,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"2732:8:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2732:51:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6225,"nodeType":"ExpressionStatement","src":"2732:51:48"}]},"documentation":{"id":6192,"nodeType":"StructuredDocumentation","src":"1510:906:48","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":6227,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nodeType":"FunctionDefinition","parameters":{"id":6197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6194,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6227,"src":"2440:25:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":6193,"name":"address","nodeType":"ElementaryTypeName","src":"2440:15:48","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":6196,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6227,"src":"2467:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6195,"name":"uint256","nodeType":"ElementaryTypeName","src":"2467:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2439:43:48"},"returnParameters":{"id":6198,"nodeType":"ParameterList","parameters":[],"src":"2492:0:48"},"scope":6337,"src":"2421:369:48","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6251,"nodeType":"Block","src":"3583:189:48","statements":[{"assignments":[6238,6240],"declarations":[{"constant":false,"id":6238,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":6251,"src":"3653:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6237,"name":"bool","nodeType":"ElementaryTypeName","src":"3653:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6240,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":6251,"src":"3667:23:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6239,"name":"bytes","nodeType":"ElementaryTypeName","src":"3667:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":6245,"initialValue":{"arguments":[{"id":6243,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6232,"src":"3706:4:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":6241,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6230,"src":"3694:6:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"3694:11:48","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":6244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3694:17:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3652:59:48"},{"expression":{"arguments":[{"id":6247,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6238,"src":"3745:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6248,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6240,"src":"3754:10:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6246,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6336,"src":"3728:16:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory) pure returns (bytes memory)"}},"id":6249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3728:37:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":6236,"id":6250,"nodeType":"Return","src":"3721:44:48"}]},"documentation":{"id":6228,"nodeType":"StructuredDocumentation","src":"2796:693:48","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":6252,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nodeType":"FunctionDefinition","parameters":{"id":6233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6230,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":6252,"src":"3516:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6229,"name":"address","nodeType":"ElementaryTypeName","src":"3516:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6232,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":6252,"src":"3532:17:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6231,"name":"bytes","nodeType":"ElementaryTypeName","src":"3532:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3515:35:48"},"returnParameters":{"id":6236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6235,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6252,"src":"3569:12:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6234,"name":"bytes","nodeType":"ElementaryTypeName","src":"3569:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3568:14:48"},"scope":6337,"src":"3494:278:48","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6280,"nodeType":"Block","src":"4155:205:48","statements":[{"assignments":[6265,6267],"declarations":[{"constant":false,"id":6265,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":6280,"src":"4225:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6264,"name":"bool","nodeType":"ElementaryTypeName","src":"4225:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6267,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":6280,"src":"4239:23:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6266,"name":"bytes","nodeType":"ElementaryTypeName","src":"4239:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":6274,"initialValue":{"arguments":[{"id":6272,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6257,"src":"4294:4:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":6268,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6255,"src":"4266:6:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"4266:11:48","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":6271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":6270,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6259,"src":"4286:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"4266:27:48","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":6273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4266:33:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4224:75:48"},{"expression":{"arguments":[{"id":6276,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6265,"src":"4333:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6277,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6267,"src":"4342:10:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6275,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6336,"src":"4316:16:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory) pure returns (bytes memory)"}},"id":6278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4316:37:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":6263,"id":6279,"nodeType":"Return","src":"4309:44:48"}]},"documentation":{"id":6253,"nodeType":"StructuredDocumentation","src":"3817:190:48","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but passing some native ETH as msg.value to the call.\n _Available since v3.4._"},"id":6281,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nodeType":"FunctionDefinition","parameters":{"id":6260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6255,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":6281,"src":"4052:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6254,"name":"address","nodeType":"ElementaryTypeName","src":"4052:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6257,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":6281,"src":"4076:17:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6256,"name":"bytes","nodeType":"ElementaryTypeName","src":"4076:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6259,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6281,"src":"4103:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6258,"name":"uint256","nodeType":"ElementaryTypeName","src":"4103:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4042:80:48"},"returnParameters":{"id":6263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6262,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6281,"src":"4141:12:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6261,"name":"bytes","nodeType":"ElementaryTypeName","src":"4141:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4140:14:48"},"scope":6337,"src":"4012:348:48","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6305,"nodeType":"Block","src":"4636:197:48","statements":[{"assignments":[6292,6294],"declarations":[{"constant":false,"id":6292,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":6305,"src":"4706:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6291,"name":"bool","nodeType":"ElementaryTypeName","src":"4706:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6294,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":6305,"src":"4720:23:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6293,"name":"bytes","nodeType":"ElementaryTypeName","src":"4720:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":6299,"initialValue":{"arguments":[{"id":6297,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6286,"src":"4767:4:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":6295,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6284,"src":"4747:6:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"4747:19:48","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":6298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4747:25:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4705:67:48"},{"expression":{"arguments":[{"id":6301,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6292,"src":"4806:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6302,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6294,"src":"4815:10:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6300,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6336,"src":"4789:16:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory) pure returns (bytes memory)"}},"id":6303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4789:37:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":6290,"id":6304,"nodeType":"Return","src":"4782:44:48"}]},"documentation":{"id":6282,"nodeType":"StructuredDocumentation","src":"4366:168:48","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":6306,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nodeType":"FunctionDefinition","parameters":{"id":6287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6284,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":6306,"src":"4569:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6283,"name":"address","nodeType":"ElementaryTypeName","src":"4569:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6286,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":6306,"src":"4585:17:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6285,"name":"bytes","nodeType":"ElementaryTypeName","src":"4585:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4568:35:48"},"returnParameters":{"id":6290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6289,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6306,"src":"4622:12:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6288,"name":"bytes","nodeType":"ElementaryTypeName","src":"4622:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4621:14:48"},"scope":6337,"src":"4539:294:48","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6335,"nodeType":"Block","src":"5159:612:48","statements":[{"condition":{"id":6316,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6309,"src":"5173:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6333,"nodeType":"Block","src":"5230:535:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6320,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"5314:10:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5314:17:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5334:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5314:21:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6331,"nodeType":"Block","src":"5685:70:48","statements":[{"expression":{"arguments":[{"expression":{"id":6327,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"5711:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":6328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LOW_LEVEL_CALL_FAILED","nodeType":"MemberAccess","referencedDeclaration":1598,"src":"5711:28:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6326,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1242,1262],"referencedDeclaration":1242,"src":"5703:7:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":6329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5703:37:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6330,"nodeType":"ExpressionStatement","src":"5703:37:48"}]},"id":6332,"nodeType":"IfStatement","src":"5310:445:48","trueBody":{"id":6325,"nodeType":"Block","src":"5337:342:48","statements":[{"AST":{"nodeType":"YulBlock","src":"5520:145:48","statements":[{"nodeType":"YulVariableDeclaration","src":"5542:40:48","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"5571:10:48"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5565:5:48"},"nodeType":"YulFunctionCall","src":"5565:17:48"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"5546:15:48","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5614:2:48","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"5618:10:48"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5610:3:48"},"nodeType":"YulFunctionCall","src":"5610:19:48"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"5631:15:48"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5603:6:48"},"nodeType":"YulFunctionCall","src":"5603:44:48"},"nodeType":"YulExpressionStatement","src":"5603:44:48"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":6311,"isOffset":false,"isSlot":false,"src":"5571:10:48","valueSize":1},{"declaration":6311,"isOffset":false,"isSlot":false,"src":"5618:10:48","valueSize":1}],"id":6324,"nodeType":"InlineAssembly","src":"5511:154:48"}]}}]},"id":6334,"nodeType":"IfStatement","src":"5169:596:48","trueBody":{"id":6319,"nodeType":"Block","src":"5182:42:48","statements":[{"expression":{"id":6317,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6311,"src":"5203:10:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":6315,"id":6318,"nodeType":"Return","src":"5196:17:48"}]}}]},"documentation":{"id":6307,"nodeType":"StructuredDocumentation","src":"4839:213:48","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling up the\n revert reason or using the one provided.\n _Available since v4.3._"},"id":6336,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nodeType":"FunctionDefinition","parameters":{"id":6312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6309,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":6336,"src":"5083:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6308,"name":"bool","nodeType":"ElementaryTypeName","src":"5083:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6311,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":6336,"src":"5097:23:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6310,"name":"bytes","nodeType":"ElementaryTypeName","src":"5097:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5082:39:48"},"returnParameters":{"id":6315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6314,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6336,"src":"5145:12:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6313,"name":"bytes","nodeType":"ElementaryTypeName","src":"5145:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5144:14:48"},"scope":6337,"src":"5057:714:48","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6338,"src":"439:5334:48"}],"src":"254:5520:48"},"id":48},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol","exportedSymbols":{"EIP712":[6428]},"id":6429,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6339,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:49"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":6340,"nodeType":"StructuredDocumentation","src":"58:1142:49","text":" @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n they need in their contracts using a combination of `abi.encode` and `keccak256`.\n This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n ({_hashTypedDataV4}).\n The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n the chain id to protect against replay attacks on an eventual fork of the chain.\n NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n _Available since v3.4._"},"fullyImplemented":true,"id":6428,"linearizedBaseContracts":[6428],"name":"EIP712","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":6342,"mutability":"immutable","name":"_HASHED_NAME","nodeType":"VariableDeclaration","scope":6428,"src":"1277:38:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6341,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1277:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":6344,"mutability":"immutable","name":"_HASHED_VERSION","nodeType":"VariableDeclaration","scope":6428,"src":"1321:41:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6343,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1321:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":6346,"mutability":"immutable","name":"_TYPE_HASH","nodeType":"VariableDeclaration","scope":6428,"src":"1368:36:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6345,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1368:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":6378,"nodeType":"Block","src":"2075:225:49","statements":[{"expression":{"id":6361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6354,"name":"_HASHED_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"2085:12:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":6358,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6349,"src":"2116:4:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":6357,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2110:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":6356,"name":"bytes","nodeType":"ElementaryTypeName","src":"2110:5:49","typeDescriptions":{}}},"id":6359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2110:11:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6355,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2100:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2100:22:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2085:37:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6362,"nodeType":"ExpressionStatement","src":"2085:37:49"},{"expression":{"id":6370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6363,"name":"_HASHED_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6344,"src":"2132:15:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":6367,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6351,"src":"2166:7:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":6366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2160:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":6365,"name":"bytes","nodeType":"ElementaryTypeName","src":"2160:5:49","typeDescriptions":{}}},"id":6368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2160:14:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6364,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2150:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2150:25:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2132:43:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6371,"nodeType":"ExpressionStatement","src":"2132:43:49"},{"expression":{"id":6376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6372,"name":"_TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6346,"src":"2185:10:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":6374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2208:84:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""}],"id":6373,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2198:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2198:95:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2185:108:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6377,"nodeType":"ExpressionStatement","src":"2185:108:49"}]},"documentation":{"id":6347,"nodeType":"StructuredDocumentation","src":"1456:559:49","text":" @dev Initializes the domain separator and parameter caches.\n The meaning of `name` and `version` is specified in\n https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n - `version`: the current major version of the signing domain.\n NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n contract upgrade]."},"id":6379,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":6352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6349,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":6379,"src":"2032:18:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6348,"name":"string","nodeType":"ElementaryTypeName","src":"2032:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":6351,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":6379,"src":"2052:21:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6350,"name":"string","nodeType":"ElementaryTypeName","src":"2052:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2031:43:49"},"returnParameters":{"id":6353,"nodeType":"ParameterList","parameters":[],"src":"2075:0:49"},"scope":6428,"src":"2020:280:49","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6400,"nodeType":"Block","src":"2456:118:49","statements":[{"expression":{"arguments":[{"arguments":[{"id":6388,"name":"_TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6346,"src":"2494:10:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6389,"name":"_HASHED_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"2506:12:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6390,"name":"_HASHED_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6344,"src":"2520:15:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":6391,"name":"_getChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6427,"src":"2537:11:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":6392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2537:13:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":6395,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2560:4:49","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$6428","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712_$6428","typeString":"contract EIP712"}],"id":6394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2552:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6393,"name":"address","nodeType":"ElementaryTypeName","src":"2552:7:49","typeDescriptions":{}}},"id":6396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2552:13:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6386,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2483:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6387,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2483:10:49","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2483:83:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6385,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2473:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2473:94:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6384,"id":6399,"nodeType":"Return","src":"2466:101:49"}]},"documentation":{"id":6380,"nodeType":"StructuredDocumentation","src":"2306:75:49","text":" @dev Returns the domain separator for the current chain."},"id":6401,"implemented":true,"kind":"function","modifiers":[],"name":"_domainSeparatorV4","nodeType":"FunctionDefinition","parameters":{"id":6381,"nodeType":"ParameterList","parameters":[],"src":"2413:2:49"},"returnParameters":{"id":6384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6383,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6401,"src":"2447:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6382,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2447:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2446:9:49"},"scope":6428,"src":"2386:188:49","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":6419,"nodeType":"Block","src":"3285:97:49","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"1901","id":6412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3329:10:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},"value":"\u0019\u0001"},{"arguments":[],"expression":{"argumentTypes":[],"id":6413,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6401,"src":"3341:18:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":6414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3341:20:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6415,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6404,"src":"3363:10:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":6410,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3312:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3312:16:49","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3312:62:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6409,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3302:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3302:73:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6408,"id":6418,"nodeType":"Return","src":"3295:80:49"}]},"documentation":{"id":6402,"nodeType":"StructuredDocumentation","src":"2580:614:49","text":" @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n function returns the hash of the fully encoded EIP712 message for this domain.\n This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n ```solidity\n bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n keccak256(\"Mail(address to,string contents)\"),\n mailTo,\n keccak256(bytes(mailContents))\n )));\n address signer = ECDSA.recover(digest, signature);\n ```"},"id":6420,"implemented":true,"kind":"function","modifiers":[],"name":"_hashTypedDataV4","nodeType":"FunctionDefinition","parameters":{"id":6405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6404,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":6420,"src":"3225:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6403,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3225:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3224:20:49"},"returnParameters":{"id":6408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6407,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6420,"src":"3276:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6406,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3276:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3275:9:49"},"scope":6428,"src":"3199:183:49","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":6426,"nodeType":"Block","src":"3495:125:49","statements":[{"AST":{"nodeType":"YulBlock","src":"3570:44:49","statements":[{"nodeType":"YulAssignment","src":"3584:20:49","value":{"arguments":[],"functionName":{"name":"chainid","nodeType":"YulIdentifier","src":"3595:7:49"},"nodeType":"YulFunctionCall","src":"3595:9:49"},"variableNames":[{"name":"chainId","nodeType":"YulIdentifier","src":"3584:7:49"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":6423,"isOffset":false,"isSlot":false,"src":"3584:7:49","valueSize":1}],"id":6425,"nodeType":"InlineAssembly","src":"3561:53:49"}]},"id":6427,"implemented":true,"kind":"function","modifiers":[],"name":"_getChainId","nodeType":"FunctionDefinition","parameters":{"id":6421,"nodeType":"ParameterList","parameters":[],"src":"3453:2:49"},"returnParameters":{"id":6424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6423,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":6427,"src":"3478:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6422,"name":"uint256","nodeType":"ElementaryTypeName","src":"3478:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3477:17:49"},"scope":6428,"src":"3433:187:49","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":6429,"src":"1201:2421:49"}],"src":"33:3590:49"},"id":49},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","exportedSymbols":{"ERC20":[6919]},"id":6920,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6430,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:50"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":6431,"nodeType":"ImportDirective","scope":6920,"sourceUnit":1744,"src":"58:90:50","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":6432,"nodeType":"ImportDirective","scope":6920,"sourceUnit":1965,"src":"149:87:50","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","file":"./SafeMath.sol","id":6433,"nodeType":"ImportDirective","scope":6920,"sourceUnit":7823,"src":"238:24:50","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6435,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1445:6:50","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":6436,"nodeType":"InheritanceSpecifier","src":"1445:6:50"}],"contractDependencies":[1964],"contractKind":"contract","documentation":{"id":6434,"nodeType":"StructuredDocumentation","src":"264:1162:50","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 For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin guidelines: functions revert instead\n of returning `false` on failure. This behavior is nonetheless conventional\n and does not conflict with the expectations of ERC20 applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."},"fullyImplemented":true,"id":6919,"linearizedBaseContracts":[6919,1964],"name":"ERC20","nodeType":"ContractDefinition","nodes":[{"id":6439,"libraryName":{"id":6437,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":7822,"src":"1464:8:50","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$7822","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"1458:27:50","typeName":{"id":6438,"name":"uint256","nodeType":"ElementaryTypeName","src":"1477:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":6443,"mutability":"mutable","name":"_balances","nodeType":"VariableDeclaration","scope":6919,"src":"1491:45:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":6442,"keyType":{"id":6440,"name":"address","nodeType":"ElementaryTypeName","src":"1499:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1491:27:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":6441,"name":"uint256","nodeType":"ElementaryTypeName","src":"1510:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":6449,"mutability":"mutable","name":"_allowances","nodeType":"VariableDeclaration","scope":6919,"src":"1543:67:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":6448,"keyType":{"id":6444,"name":"address","nodeType":"ElementaryTypeName","src":"1551:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1543:47:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":6447,"keyType":{"id":6445,"name":"address","nodeType":"ElementaryTypeName","src":"1570:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1562:27:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":6446,"name":"uint256","nodeType":"ElementaryTypeName","src":"1581:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":6451,"mutability":"mutable","name":"_totalSupply","nodeType":"VariableDeclaration","scope":6919,"src":"1617:28:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6450,"name":"uint256","nodeType":"ElementaryTypeName","src":"1617:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":6453,"mutability":"mutable","name":"_name","nodeType":"VariableDeclaration","scope":6919,"src":"1652:20:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":6452,"name":"string","nodeType":"ElementaryTypeName","src":"1652:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":6455,"mutability":"mutable","name":"_symbol","nodeType":"VariableDeclaration","scope":6919,"src":"1678:22:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":6454,"name":"string","nodeType":"ElementaryTypeName","src":"1678:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":6457,"mutability":"mutable","name":"_decimals","nodeType":"VariableDeclaration","scope":6919,"src":"1706:23:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6456,"name":"uint8","nodeType":"ElementaryTypeName","src":"1706:5:50","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"body":{"id":6477,"nodeType":"Block","src":"2108:81:50","statements":[{"expression":{"id":6467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6465,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6453,"src":"2118:5:50","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6466,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6460,"src":"2126:5:50","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2118:13:50","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":6468,"nodeType":"ExpressionStatement","src":"2118:13:50"},{"expression":{"id":6471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6469,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6455,"src":"2141:7:50","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6470,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6462,"src":"2151:7:50","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2141:17:50","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":6472,"nodeType":"ExpressionStatement","src":"2141:17:50"},{"expression":{"id":6475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6473,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6457,"src":"2168:9:50","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3138","id":6474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2180:2:50","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"2168:14:50","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":6476,"nodeType":"ExpressionStatement","src":"2168:14:50"}]},"documentation":{"id":6458,"nodeType":"StructuredDocumentation","src":"1736:311:50","text":" @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n a default value of 18.\n To select a different value for {decimals}, use {_setupDecimals}.\n All three of these values are immutable: they can only be set once during\n construction."},"id":6478,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":6463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6460,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":6478,"src":"2064:19:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6459,"name":"string","nodeType":"ElementaryTypeName","src":"2064:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":6462,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":6478,"src":"2085:21:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6461,"name":"string","nodeType":"ElementaryTypeName","src":"2085:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2063:44:50"},"returnParameters":{"id":6464,"nodeType":"ParameterList","parameters":[],"src":"2108:0:50"},"scope":6919,"src":"2052:137:50","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":6486,"nodeType":"Block","src":"2306:29:50","statements":[{"expression":{"id":6484,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6453,"src":"2323:5:50","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":6483,"id":6485,"nodeType":"Return","src":"2316:12:50"}]},"documentation":{"id":6479,"nodeType":"StructuredDocumentation","src":"2195:54:50","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":6487,"implemented":true,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","parameters":{"id":6480,"nodeType":"ParameterList","parameters":[],"src":"2267:2:50"},"returnParameters":{"id":6483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6482,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6487,"src":"2291:13:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6481,"name":"string","nodeType":"ElementaryTypeName","src":"2291:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2290:15:50"},"scope":6919,"src":"2254:81:50","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":6495,"nodeType":"Block","src":"2502:31:50","statements":[{"expression":{"id":6493,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6455,"src":"2519:7:50","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":6492,"id":6494,"nodeType":"Return","src":"2512:14:50"}]},"documentation":{"id":6488,"nodeType":"StructuredDocumentation","src":"2341:102:50","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":6496,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","parameters":{"id":6489,"nodeType":"ParameterList","parameters":[],"src":"2463:2:50"},"returnParameters":{"id":6492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6491,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6496,"src":"2487:13:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6490,"name":"string","nodeType":"ElementaryTypeName","src":"2487:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2486:15:50"},"scope":6919,"src":"2448:85:50","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":6504,"nodeType":"Block","src":"3204:33:50","statements":[{"expression":{"id":6502,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6457,"src":"3221:9:50","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":6501,"id":6503,"nodeType":"Return","src":"3214:16:50"}]},"documentation":{"id":6497,"nodeType":"StructuredDocumentation","src":"2539:612:50","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 value {ERC20} uses, unless {_setupDecimals} is\n called.\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":6505,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","parameters":{"id":6498,"nodeType":"ParameterList","parameters":[],"src":"3173:2:50"},"returnParameters":{"id":6501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6500,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6505,"src":"3197:5:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6499,"name":"uint8","nodeType":"ElementaryTypeName","src":"3197:5:50","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3196:7:50"},"scope":6919,"src":"3156:81:50","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1895],"body":{"id":6514,"nodeType":"Block","src":"3570:36:50","statements":[{"expression":{"id":6512,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6451,"src":"3587:12:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6511,"id":6513,"nodeType":"Return","src":"3580:19:50"}]},"documentation":{"id":6506,"nodeType":"StructuredDocumentation","src":"3243:252:50","text":" @dev See {IERC20-totalSupply}. The total supply should only be read using this function\n Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n storage values)."},"functionSelector":"18160ddd","id":6515,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":{"id":6508,"nodeType":"OverrideSpecifier","overrides":[],"src":"3543:8:50"},"parameters":{"id":6507,"nodeType":"ParameterList","parameters":[],"src":"3520:2:50"},"returnParameters":{"id":6511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6510,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6515,"src":"3561:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6509,"name":"uint256","nodeType":"ElementaryTypeName","src":"3561:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3560:9:50"},"scope":6919,"src":"3500:106:50","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":6525,"nodeType":"Block","src":"3927:37:50","statements":[{"expression":{"id":6523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6521,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6451,"src":"3937:12:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6522,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6518,"src":"3952:5:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3937:20:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6524,"nodeType":"ExpressionStatement","src":"3937:20:50"}]},"documentation":{"id":6516,"nodeType":"StructuredDocumentation","src":"3612:253:50","text":" @dev Sets a new value for the total supply. It should only be set using this function.\n * Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n storage values)."},"id":6526,"implemented":true,"kind":"function","modifiers":[],"name":"_setTotalSupply","nodeType":"FunctionDefinition","parameters":{"id":6519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6518,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6526,"src":"3895:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6517,"name":"uint256","nodeType":"ElementaryTypeName","src":"3895:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3894:15:50"},"returnParameters":{"id":6520,"nodeType":"ParameterList","parameters":[],"src":"3927:0:50"},"scope":6919,"src":"3870:94:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[1903],"body":{"id":6539,"nodeType":"Block","src":"4097:42:50","statements":[{"expression":{"baseExpression":{"id":6535,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6443,"src":"4114:9:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6537,"indexExpression":{"id":6536,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6529,"src":"4124:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4114:18:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6534,"id":6538,"nodeType":"Return","src":"4107:25:50"}]},"documentation":{"id":6527,"nodeType":"StructuredDocumentation","src":"3970:47:50","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":6540,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","overrides":{"id":6531,"nodeType":"OverrideSpecifier","overrides":[],"src":"4070:8:50"},"parameters":{"id":6530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6529,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":6540,"src":"4041:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6528,"name":"address","nodeType":"ElementaryTypeName","src":"4041:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4040:17:50"},"returnParameters":{"id":6534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6533,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6540,"src":"4088:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6532,"name":"uint256","nodeType":"ElementaryTypeName","src":"4088:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4087:9:50"},"scope":6919,"src":"4022:117:50","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1913],"body":{"id":6560,"nodeType":"Block","src":"4434:78:50","statements":[{"expression":{"arguments":[{"expression":{"id":6552,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4454:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4454:10:50","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6554,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6543,"src":"4466:9:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6555,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6545,"src":"4477:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6551,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6766,"src":"4444:9:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4444:40:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6557,"nodeType":"ExpressionStatement","src":"4444:40:50"},{"expression":{"hexValue":"74727565","id":6558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4501:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6550,"id":6559,"nodeType":"Return","src":"4494:11:50"}]},"documentation":{"id":6541,"nodeType":"StructuredDocumentation","src":"4145:192:50","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`."},"functionSelector":"a9059cbb","id":6561,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","overrides":{"id":6547,"nodeType":"OverrideSpecifier","overrides":[],"src":"4410:8:50"},"parameters":{"id":6546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6543,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6561,"src":"4360:17:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6542,"name":"address","nodeType":"ElementaryTypeName","src":"4360:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6545,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6561,"src":"4379:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6544,"name":"uint256","nodeType":"ElementaryTypeName","src":"4379:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4359:35:50"},"returnParameters":{"id":6550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6549,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6561,"src":"4428:4:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6548,"name":"bool","nodeType":"ElementaryTypeName","src":"4428:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4427:6:50"},"scope":6919,"src":"4342:170:50","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1923],"body":{"id":6578,"nodeType":"Block","src":"4668:51:50","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":6572,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6449,"src":"4685:11:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":6574,"indexExpression":{"id":6573,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6564,"src":"4697:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4685:18:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6576,"indexExpression":{"id":6575,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6566,"src":"4704:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4685:27:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6571,"id":6577,"nodeType":"Return","src":"4678:34:50"}]},"documentation":{"id":6562,"nodeType":"StructuredDocumentation","src":"4518:47:50","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":6579,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","overrides":{"id":6568,"nodeType":"OverrideSpecifier","overrides":[],"src":"4641:8:50"},"parameters":{"id":6567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6564,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":6579,"src":"4589:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6563,"name":"address","nodeType":"ElementaryTypeName","src":"4589:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6566,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6579,"src":"4604:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6565,"name":"address","nodeType":"ElementaryTypeName","src":"4604:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4588:32:50"},"returnParameters":{"id":6571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6570,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6579,"src":"4659:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6569,"name":"uint256","nodeType":"ElementaryTypeName","src":"4659:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4658:9:50"},"scope":6919,"src":"4570:149:50","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1933],"body":{"id":6599,"nodeType":"Block","src":"4946:75:50","statements":[{"expression":{"arguments":[{"expression":{"id":6591,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4965:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4965:10:50","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6593,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6582,"src":"4977:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6594,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6584,"src":"4986:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6590,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6896,"src":"4956:8:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4956:37:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6596,"nodeType":"ExpressionStatement","src":"4956:37:50"},{"expression":{"hexValue":"74727565","id":6597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5010:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6589,"id":6598,"nodeType":"Return","src":"5003:11:50"}]},"documentation":{"id":6580,"nodeType":"StructuredDocumentation","src":"4725:127:50","text":" @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":6600,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":{"id":6586,"nodeType":"OverrideSpecifier","overrides":[],"src":"4922:8:50"},"parameters":{"id":6585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6582,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6600,"src":"4874:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6581,"name":"address","nodeType":"ElementaryTypeName","src":"4874:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6584,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6600,"src":"4891:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6583,"name":"uint256","nodeType":"ElementaryTypeName","src":"4891:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4873:33:50"},"returnParameters":{"id":6589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6588,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6600,"src":"4940:4:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6587,"name":"bool","nodeType":"ElementaryTypeName","src":"4940:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4939:6:50"},"scope":6919,"src":"4857:164:50","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1945],"body":{"id":6638,"nodeType":"Block","src":"5630:244:50","statements":[{"expression":{"arguments":[{"id":6614,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6603,"src":"5650:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6615,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6605,"src":"5658:9:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6616,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6607,"src":"5669:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6613,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6766,"src":"5640:9:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5640:36:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6618,"nodeType":"ExpressionStatement","src":"5640:36:50"},{"expression":{"arguments":[{"id":6620,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6603,"src":"5708:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6621,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5728:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5728:10:50","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":6630,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6607,"src":"5788:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6631,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"5796:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":6632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_EXCEEDS_ALLOWANCE","nodeType":"MemberAccess","referencedDeclaration":1550,"src":"5796:39:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":6623,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6449,"src":"5752:11:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":6625,"indexExpression":{"id":6624,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6603,"src":"5764:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5752:19:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6628,"indexExpression":{"expression":{"id":6626,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5772:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5772:10:50","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5752:31:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7821,"src":"5752:35:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5752:84:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6619,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6896,"src":"5686:8:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5686:160:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6635,"nodeType":"ExpressionStatement","src":"5686:160:50"},{"expression":{"hexValue":"74727565","id":6636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5863:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6612,"id":6637,"nodeType":"Return","src":"5856:11:50"}]},"documentation":{"id":6601,"nodeType":"StructuredDocumentation","src":"5027:456:50","text":" @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`."},"functionSelector":"23b872dd","id":6639,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":{"id":6609,"nodeType":"OverrideSpecifier","overrides":[],"src":"5606:8:50"},"parameters":{"id":6608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6603,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":6639,"src":"5519:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6602,"name":"address","nodeType":"ElementaryTypeName","src":"5519:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6605,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6639,"src":"5543:17:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6604,"name":"address","nodeType":"ElementaryTypeName","src":"5543:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6607,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6639,"src":"5570:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6606,"name":"uint256","nodeType":"ElementaryTypeName","src":"5570:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5509:81:50"},"returnParameters":{"id":6612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6611,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6639,"src":"5624:4:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6610,"name":"bool","nodeType":"ElementaryTypeName","src":"5624:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5623:6:50"},"scope":6919,"src":"5488:386:50","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":6666,"nodeType":"Block","src":"6363:117:50","statements":[{"expression":{"arguments":[{"expression":{"id":6650,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6382:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6382:10:50","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6652,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6642,"src":"6394:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6660,"name":"addedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6644,"src":"6440:10:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":6653,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6449,"src":"6403:11:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":6656,"indexExpression":{"expression":{"id":6654,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6415:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6415:10:50","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6403:23:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6658,"indexExpression":{"id":6657,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6642,"src":"6427:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6403:32:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7775,"src":"6403:36:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6403:48:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6649,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6896,"src":"6373:8:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6373:79:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6663,"nodeType":"ExpressionStatement","src":"6373:79:50"},{"expression":{"hexValue":"74727565","id":6664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6469:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6648,"id":6665,"nodeType":"Return","src":"6462:11:50"}]},"documentation":{"id":6640,"nodeType":"StructuredDocumentation","src":"5880:384:50","text":" @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"39509351","id":6667,"implemented":true,"kind":"function","modifiers":[],"name":"increaseAllowance","nodeType":"FunctionDefinition","parameters":{"id":6645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6642,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6667,"src":"6296:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6641,"name":"address","nodeType":"ElementaryTypeName","src":"6296:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6644,"mutability":"mutable","name":"addedValue","nodeType":"VariableDeclaration","scope":6667,"src":"6313:18:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6643,"name":"uint256","nodeType":"ElementaryTypeName","src":"6313:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6295:37:50"},"returnParameters":{"id":6648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6647,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6667,"src":"6357:4:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6646,"name":"bool","nodeType":"ElementaryTypeName","src":"6357:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6356:6:50"},"scope":6919,"src":"6269:211:50","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":6696,"nodeType":"Block","src":"7066:213:50","statements":[{"expression":{"arguments":[{"expression":{"id":6678,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7098:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7098:10:50","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6680,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6670,"src":"7122:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6688,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6672,"src":"7180:15:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6689,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"7197:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":6690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_DECREASED_ALLOWANCE_BELOW_ZERO","nodeType":"MemberAccess","referencedDeclaration":1553,"src":"7197:43:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":6681,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6449,"src":"7143:11:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":6684,"indexExpression":{"expression":{"id":6682,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7155:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7155:10:50","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7143:23:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6686,"indexExpression":{"id":6685,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6670,"src":"7167:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7143:32:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7821,"src":"7143:36:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7143:98:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6677,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6896,"src":"7076:8:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7076:175:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6693,"nodeType":"ExpressionStatement","src":"7076:175:50"},{"expression":{"hexValue":"74727565","id":6694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7268:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":6676,"id":6695,"nodeType":"Return","src":"7261:11:50"}]},"documentation":{"id":6668,"nodeType":"StructuredDocumentation","src":"6486:476:50","text":" @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."},"functionSelector":"a457c2d7","id":6697,"implemented":true,"kind":"function","modifiers":[],"name":"decreaseAllowance","nodeType":"FunctionDefinition","parameters":{"id":6673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6670,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6697,"src":"6994:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6669,"name":"address","nodeType":"ElementaryTypeName","src":"6994:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6672,"mutability":"mutable","name":"subtractedValue","nodeType":"VariableDeclaration","scope":6697,"src":"7011:23:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6671,"name":"uint256","nodeType":"ElementaryTypeName","src":"7011:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6993:42:50"},"returnParameters":{"id":6676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6675,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6697,"src":"7060:4:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6674,"name":"bool","nodeType":"ElementaryTypeName","src":"7060:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7059:6:50"},"scope":6919,"src":"6967:312:50","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":6765,"nodeType":"Block","src":"7870:442:50","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6708,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6700,"src":"7889:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7907:1:50","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":6710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7899:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6709,"name":"address","nodeType":"ElementaryTypeName","src":"7899:7:50","typeDescriptions":{}}},"id":6712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7899:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7889:20:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6714,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"7911:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":6715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_FROM_ZERO_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":1532,"src":"7911:39:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6707,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"7880:8:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7880:71:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6717,"nodeType":"ExpressionStatement","src":"7880:71:50"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6719,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6702,"src":"7970:9:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7991:1:50","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":6721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7983:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6720,"name":"address","nodeType":"ElementaryTypeName","src":"7983:7:50","typeDescriptions":{}}},"id":6723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7983:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7970:23:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6725,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"7995:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":6726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_TO_ZERO_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":1535,"src":"7995:37:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6718,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"7961:8:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7961:72:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6728,"nodeType":"ExpressionStatement","src":"7961:72:50"},{"expression":{"arguments":[{"id":6730,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6700,"src":"8065:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6731,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6702,"src":"8073:9:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6732,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6704,"src":"8084:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6729,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6918,"src":"8044:20:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8044:47:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6734,"nodeType":"ExpressionStatement","src":"8044:47:50"},{"expression":{"id":6746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6735,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6443,"src":"8102:9:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6737,"indexExpression":{"id":6736,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6700,"src":"8112:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8102:17:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6742,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6704,"src":"8144:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6743,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"8152:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":6744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_EXCEEDS_BALANCE","nodeType":"MemberAccess","referencedDeclaration":1556,"src":"8152:37:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6738,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6443,"src":"8122:9:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6740,"indexExpression":{"id":6739,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6700,"src":"8132:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8122:17:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7821,"src":"8122:21:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8122:68:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8102:88:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6747,"nodeType":"ExpressionStatement","src":"8102:88:50"},{"expression":{"id":6757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6748,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6443,"src":"8200:9:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6750,"indexExpression":{"id":6749,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6702,"src":"8210:9:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8200:20:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6755,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6704,"src":"8248:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6751,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6443,"src":"8223:9:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6753,"indexExpression":{"id":6752,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6702,"src":"8233:9:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8223:20:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7775,"src":"8223:24:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8223:32:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8200:55:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6758,"nodeType":"ExpressionStatement","src":"8200:55:50"},{"eventCall":{"arguments":[{"id":6760,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6700,"src":"8279:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6761,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6702,"src":"8287:9:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6762,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6704,"src":"8298:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6759,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"8270:8:50","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8270:35:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6764,"nodeType":"EmitStatement","src":"8265:40:50"}]},"documentation":{"id":6698,"nodeType":"StructuredDocumentation","src":"7285:463:50","text":" @dev Moves tokens `amount` from `sender` to `recipient`.\n This is 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 Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`."},"id":6766,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nodeType":"FunctionDefinition","parameters":{"id":6705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6700,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":6766,"src":"7781:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6699,"name":"address","nodeType":"ElementaryTypeName","src":"7781:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6702,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6766,"src":"7805:17:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6701,"name":"address","nodeType":"ElementaryTypeName","src":"7805:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6704,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6766,"src":"7832:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6703,"name":"uint256","nodeType":"ElementaryTypeName","src":"7832:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7771:81:50"},"returnParameters":{"id":6706,"nodeType":"ParameterList","parameters":[],"src":"7870:0:50"},"scope":6919,"src":"7753:559:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6811,"nodeType":"Block","src":"8648:232:50","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":6777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8687:1:50","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":6776,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8679:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6775,"name":"address","nodeType":"ElementaryTypeName","src":"8679:7:50","typeDescriptions":{}}},"id":6778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8679:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6779,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6769,"src":"8691:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6780,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6771,"src":"8700:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6774,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6918,"src":"8658:20:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8658:49:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6782,"nodeType":"ExpressionStatement","src":"8658:49:50"},{"expression":{"arguments":[{"arguments":[{"id":6787,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6771,"src":"8752:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6784,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6515,"src":"8734:11:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":6785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8734:13:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7775,"src":"8734:17:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8734:25:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6783,"name":"_setTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6526,"src":"8718:15:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":6789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8718:42:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6790,"nodeType":"ExpressionStatement","src":"8718:42:50"},{"expression":{"id":6800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6791,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6443,"src":"8770:9:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6793,"indexExpression":{"id":6792,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6769,"src":"8780:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8770:18:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6798,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6771,"src":"8814:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6794,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6443,"src":"8791:9:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6796,"indexExpression":{"id":6795,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6769,"src":"8801:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8791:18:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7775,"src":"8791:22:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8791:30:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8770:51:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6801,"nodeType":"ExpressionStatement","src":"8770:51:50"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":6805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8853:1:50","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":6804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8845:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6803,"name":"address","nodeType":"ElementaryTypeName","src":"8845:7:50","typeDescriptions":{}}},"id":6806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8845:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6807,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6769,"src":"8857:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6808,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6771,"src":"8866:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6802,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"8836:8:50","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8836:37:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6810,"nodeType":"EmitStatement","src":"8831:42:50"}]},"documentation":{"id":6767,"nodeType":"StructuredDocumentation","src":"8318:260:50","text":"@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `to` cannot be the zero address."},"id":6812,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nodeType":"FunctionDefinition","parameters":{"id":6772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6769,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":6812,"src":"8598:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6768,"name":"address","nodeType":"ElementaryTypeName","src":"8598:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6771,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6812,"src":"8615:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6770,"name":"uint256","nodeType":"ElementaryTypeName","src":"8615:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8597:33:50"},"returnParameters":{"id":6773,"nodeType":"ParameterList","parameters":[],"src":"8648:0:50"},"scope":6919,"src":"8583:297:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6870,"nodeType":"Block","src":"9265:346:50","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6821,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6815,"src":"9284:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9303:1:50","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":6823,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9295:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6822,"name":"address","nodeType":"ElementaryTypeName","src":"9295:7:50","typeDescriptions":{}}},"id":6825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9295:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"9284:21:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6827,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"9307:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":6828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_BURN_FROM_ZERO_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"9307:35:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6820,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"9275:8:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9275:68:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6830,"nodeType":"ExpressionStatement","src":"9275:68:50"},{"expression":{"arguments":[{"id":6832,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6815,"src":"9375:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9392:1:50","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":6834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9384:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6833,"name":"address","nodeType":"ElementaryTypeName","src":"9384:7:50","typeDescriptions":{}}},"id":6836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9384:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6837,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6817,"src":"9396:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6831,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6918,"src":"9354:20:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9354:49:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6839,"nodeType":"ExpressionStatement","src":"9354:49:50"},{"expression":{"id":6851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6840,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6443,"src":"9414:9:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6842,"indexExpression":{"id":6841,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6815,"src":"9424:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9414:18:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6847,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6817,"src":"9458:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6848,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"9466:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":6849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_BURN_EXCEEDS_BALANCE","nodeType":"MemberAccess","referencedDeclaration":1610,"src":"9466:33:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6843,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6443,"src":"9435:9:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6845,"indexExpression":{"id":6844,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6815,"src":"9445:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9435:18:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7821,"src":"9435:22:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9435:65:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9414:86:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6852,"nodeType":"ExpressionStatement","src":"9414:86:50"},{"expression":{"arguments":[{"arguments":[{"id":6857,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6817,"src":"9544:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6854,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6515,"src":"9526:11:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":6855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9526:13:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7793,"src":"9526:17:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9526:25:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6853,"name":"_setTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6526,"src":"9510:15:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":6859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9510:42:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6860,"nodeType":"ExpressionStatement","src":"9510:42:50"},{"eventCall":{"arguments":[{"id":6862,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6815,"src":"9576:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":6865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9593:1:50","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":6864,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9585:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6863,"name":"address","nodeType":"ElementaryTypeName","src":"9585:7:50","typeDescriptions":{}}},"id":6866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9585:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6867,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6817,"src":"9597:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6861,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"9567:8:50","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9567:37:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6869,"nodeType":"EmitStatement","src":"9562:42:50"}]},"documentation":{"id":6813,"nodeType":"StructuredDocumentation","src":"8886:309:50","text":" @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."},"id":6871,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nodeType":"FunctionDefinition","parameters":{"id":6818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6815,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":6871,"src":"9215:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6814,"name":"address","nodeType":"ElementaryTypeName","src":"9215:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6817,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6871,"src":"9232:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6816,"name":"uint256","nodeType":"ElementaryTypeName","src":"9232:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9214:33:50"},"returnParameters":{"id":6819,"nodeType":"ParameterList","parameters":[],"src":"9265:0:50"},"scope":6919,"src":"9200:411:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6895,"nodeType":"Block","src":"10147:100:50","statements":[{"expression":{"id":6887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6881,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6449,"src":"10157:11:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":6884,"indexExpression":{"id":6882,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6874,"src":"10169:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10157:18:50","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6885,"indexExpression":{"id":6883,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6876,"src":"10176:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10157:27:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6886,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6878,"src":"10187:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10157:36:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6888,"nodeType":"ExpressionStatement","src":"10157:36:50"},{"eventCall":{"arguments":[{"id":6890,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6874,"src":"10217:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6891,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6876,"src":"10224:7:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6892,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6878,"src":"10233:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6889,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"10208:8:50","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10208:32:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6894,"nodeType":"EmitStatement","src":"10203:37:50"}]},"documentation":{"id":6872,"nodeType":"StructuredDocumentation","src":"9617:412:50","text":" @dev Sets `amount` 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."},"id":6896,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nodeType":"FunctionDefinition","parameters":{"id":6879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6874,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":6896,"src":"10061:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6873,"name":"address","nodeType":"ElementaryTypeName","src":"10061:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6876,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":6896,"src":"10084:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6875,"name":"address","nodeType":"ElementaryTypeName","src":"10084:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6878,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6896,"src":"10109:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6877,"name":"uint256","nodeType":"ElementaryTypeName","src":"10109:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10051:78:50"},"returnParameters":{"id":6880,"nodeType":"ParameterList","parameters":[],"src":"10147:0:50"},"scope":6919,"src":"10034:213:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6906,"nodeType":"Block","src":"10620:38:50","statements":[{"expression":{"id":6904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6902,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6457,"src":"10630:9:50","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6903,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6899,"src":"10642:9:50","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10630:21:50","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":6905,"nodeType":"ExpressionStatement","src":"10630:21:50"}]},"documentation":{"id":6897,"nodeType":"StructuredDocumentation","src":"10253:312:50","text":" @dev Sets {decimals} to a value other than the default one of 18.\n WARNING: This function should only be called from the constructor. Most\n applications that interact with token contracts will not expect\n {decimals} to ever change, and may work incorrectly if it does."},"id":6907,"implemented":true,"kind":"function","modifiers":[],"name":"_setupDecimals","nodeType":"FunctionDefinition","parameters":{"id":6900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6899,"mutability":"mutable","name":"decimals_","nodeType":"VariableDeclaration","scope":6907,"src":"10594:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6898,"name":"uint8","nodeType":"ElementaryTypeName","src":"10594:5:50","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"10593:17:50"},"returnParameters":{"id":6901,"nodeType":"ParameterList","parameters":[],"src":"10620:0:50"},"scope":6919,"src":"10570:88:50","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6917,"nodeType":"Block","src":"11364:64:50","statements":[]},"documentation":{"id":6908,"nodeType":"StructuredDocumentation","src":"10664:576:50","text":" @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be to transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":6918,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nodeType":"FunctionDefinition","parameters":{"id":6915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6910,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":6918,"src":"11284:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6909,"name":"address","nodeType":"ElementaryTypeName","src":"11284:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6912,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":6918,"src":"11306:10:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6911,"name":"address","nodeType":"ElementaryTypeName","src":"11306:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6914,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6918,"src":"11326:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6913,"name":"uint256","nodeType":"ElementaryTypeName","src":"11326:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11274:72:50"},"returnParameters":{"id":6916,"nodeType":"ParameterList","parameters":[],"src":"11364:0:50"},"scope":6919,"src":"11245:183:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":6920,"src":"1427:10003:50"}],"src":"33:11398:50"},"id":50},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol","exportedSymbols":{"ERC20Burnable":[6976]},"id":6977,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6921,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:51"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"./ERC20.sol","id":6922,"nodeType":"ImportDirective","scope":6977,"sourceUnit":6920,"src":"58:21:51","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":6924,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":6919,"src":"325:5:51","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$6919","typeString":"contract ERC20"}},"id":6925,"nodeType":"InheritanceSpecifier","src":"325:5:51"}],"contractDependencies":[1964,6919],"contractKind":"contract","documentation":{"id":6923,"nodeType":"StructuredDocumentation","src":"81:208:51","text":" @dev Extension of {ERC20} that allows token holders to destroy both their own\n tokens and those that they have an allowance for, in a way that can be\n recognized off-chain (via event analysis)."},"fullyImplemented":false,"id":6976,"linearizedBaseContracts":[6976,6919,1964],"name":"ERC20Burnable","nodeType":"ContractDefinition","nodes":[{"id":6928,"libraryName":{"id":6926,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":7822,"src":"343:8:51","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$7822","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"337:27:51","typeName":{"id":6927,"name":"uint256","nodeType":"ElementaryTypeName","src":"356:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"body":{"id":6940,"nodeType":"Block","src":"518:42:51","statements":[{"expression":{"arguments":[{"expression":{"id":6935,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"534:3:51","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"534:10:51","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6937,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6931,"src":"546:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6934,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"528:5:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":6938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"528:25:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6939,"nodeType":"ExpressionStatement","src":"528:25:51"}]},"documentation":{"id":6929,"nodeType":"StructuredDocumentation","src":"370:98:51","text":" @dev Destroys `amount` tokens from the caller.\n See {ERC20-_burn}."},"functionSelector":"42966c68","id":6941,"implemented":true,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":6932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6931,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6941,"src":"487:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6930,"name":"uint256","nodeType":"ElementaryTypeName","src":"487:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"486:16:51"},"returnParameters":{"id":6933,"nodeType":"ParameterList","parameters":[],"src":"518:0:51"},"scope":6976,"src":"473:87:51","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":6974,"nodeType":"Block","src":"932:217:51","statements":[{"assignments":[6950],"declarations":[{"constant":false,"id":6950,"mutability":"mutable","name":"decreasedAllowance","nodeType":"VariableDeclaration","scope":6974,"src":"942:26:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6949,"name":"uint256","nodeType":"ElementaryTypeName","src":"942:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6961,"initialValue":{"arguments":[{"id":6957,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6946,"src":"1006:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6958,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"1014:6:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":6959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_BURN_EXCEEDS_ALLOWANCE","nodeType":"MemberAccess","referencedDeclaration":1559,"src":"1014:35:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":6952,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6944,"src":"981:7:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6953,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"990:3:51","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"990:10:51","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":6951,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6579,"src":"971:9:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":6955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"971:30:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":7821,"src":"971:34:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"971:79:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"942:108:51"},{"expression":{"arguments":[{"id":6963,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6944,"src":"1070:7:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6964,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1079:3:51","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1079:10:51","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6966,"name":"decreasedAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6950,"src":"1091:18:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6962,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6896,"src":"1061:8:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1061:49:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6968,"nodeType":"ExpressionStatement","src":"1061:49:51"},{"expression":{"arguments":[{"id":6970,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6944,"src":"1126:7:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6971,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6946,"src":"1135:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6969,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"1120:5:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":6972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1120:22:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6973,"nodeType":"ExpressionStatement","src":"1120:22:51"}]},"documentation":{"id":6942,"nodeType":"StructuredDocumentation","src":"566:295:51","text":" @dev Destroys `amount` tokens from `account`, deducting from the caller's\n allowance.\n See {ERC20-_burn} and {ERC20-allowance}.\n Requirements:\n - the caller must have allowance for ``accounts``'s tokens of at least\n `amount`."},"functionSelector":"79cc6790","id":6975,"implemented":true,"kind":"function","modifiers":[],"name":"burnFrom","nodeType":"FunctionDefinition","parameters":{"id":6947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6944,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":6975,"src":"884:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6943,"name":"address","nodeType":"ElementaryTypeName","src":"884:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6946,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6975,"src":"901:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6945,"name":"uint256","nodeType":"ElementaryTypeName","src":"901:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"883:33:51"},"returnParameters":{"id":6948,"nodeType":"ParameterList","parameters":[],"src":"932:0:51"},"scope":6976,"src":"866:283:51","stateMutability":"nonpayable","virtual":true,"visibility":"public"}],"scope":6977,"src":"290:861:51"}],"src":"33:1119:51"},"id":51},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol","exportedSymbols":{"ERC20Permit":[7085]},"id":7086,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6978,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:52"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","id":6979,"nodeType":"ImportDirective","scope":7086,"sourceUnit":2001,"src":"58:93:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"./ERC20.sol","id":6980,"nodeType":"ImportDirective","scope":7086,"sourceUnit":6920,"src":"153:21:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol","file":"../helpers/EOASignaturesValidator.sol","id":6981,"nodeType":"ImportDirective","scope":7086,"sourceUnit":3629,"src":"175:47:52","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":6983,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":6919,"src":"775:5:52","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$6919","typeString":"contract ERC20"}},"id":6984,"nodeType":"InheritanceSpecifier","src":"775:5:52"},{"baseName":{"id":6985,"name":"IERC20Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":2000,"src":"782:12:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$2000","typeString":"contract IERC20Permit"}},"id":6986,"nodeType":"InheritanceSpecifier","src":"782:12:52"},{"baseName":{"id":6987,"name":"EOASignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":3628,"src":"796:22:52","typeDescriptions":{"typeIdentifier":"t_contract$_EOASignaturesValidator_$3628","typeString":"contract EOASignaturesValidator"}},"id":6988,"nodeType":"InheritanceSpecifier","src":"796:22:52"}],"contractDependencies":[1772,1964,2000,3628,6428,6919],"contractKind":"contract","documentation":{"id":6982,"nodeType":"StructuredDocumentation","src":"224:517:52","text":" @dev Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all.\n _Available since v3.4._"},"fullyImplemented":false,"id":7085,"linearizedBaseContracts":[7085,3628,6428,1772,2000,6919,1964],"name":"ERC20Permit","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":6993,"mutability":"constant","name":"_PERMIT_TYPEHASH","nodeType":"VariableDeclaration","scope":7085,"src":"877:153:52","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6989,"name":"bytes32","nodeType":"ElementaryTypeName","src":"877:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529","id":6991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"940:84:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9","typeString":"literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""},"value":"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9","typeString":"literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""}],"id":6990,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"921:9:52","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"921:109:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":7003,"nodeType":"Block","src":"1312:64:52","statements":[]},"documentation":{"id":6994,"nodeType":"StructuredDocumentation","src":"1037:220:52","text":" @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\"1\"`.\n It's a good idea to use the same `name` that is defined as the ERC20 token name."},"id":7004,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":6999,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6996,"src":"1301:4:52","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"31","id":7000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1307:3:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"id":7001,"modifierName":{"id":6998,"name":"EIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6428,"src":"1294:6:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP712_$6428_$","typeString":"type(contract EIP712)"}},"nodeType":"ModifierInvocation","src":"1294:17:52"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":6997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6996,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":7004,"src":"1274:18:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6995,"name":"string","nodeType":"ElementaryTypeName","src":"1274:6:52","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1273:20:52"},"returnParameters":{"id":7002,"nodeType":"ParameterList","parameters":[],"src":"1312:0:52"},"scope":7085,"src":"1262:114:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1985],"body":{"id":7058,"nodeType":"Block","src":"1635:310:52","statements":[{"assignments":[7024],"declarations":[{"constant":false,"id":7024,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":7058,"src":"1645:18:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7023,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1645:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7038,"initialValue":{"arguments":[{"arguments":[{"id":7028,"name":"_PERMIT_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6993,"src":"1700:16:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7029,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7007,"src":"1718:5:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7030,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7009,"src":"1725:7:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7031,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7011,"src":"1734:5:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":7033,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7007,"src":"1754:5:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7032,"name":"getNextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3485,"src":"1741:12:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":7034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1741:19:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7035,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7013,"src":"1762:8:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7026,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1689:3:52","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1689:10:52","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1689:82:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7025,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1666:9:52","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1666:115:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1645:136:52"},{"expression":{"arguments":[{"id":7040,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7007,"src":"1814:5:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7041,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7024,"src":"1821:10:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":7043,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"1851:1:52","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":7044,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7017,"src":"1854:1:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7045,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7019,"src":"1857:1:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7042,"name":"_toArraySignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3627,"src":"1833:17:52","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint8,bytes32,bytes32) pure returns (bytes memory)"}},"id":7046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1833:26:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7047,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7013,"src":"1861:8:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7048,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"1871:6:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":7049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INVALID_SIGNATURE","nodeType":"MemberAccess","referencedDeclaration":1652,"src":"1871:24:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7039,"name":"_ensureValidSignature","nodeType":"Identifier","overloadedDeclarations":[3509,3553],"referencedDeclaration":3553,"src":"1792:21:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,bytes32,bytes memory,uint256,uint256)"}},"id":7050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1792:104:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7051,"nodeType":"ExpressionStatement","src":"1792:104:52"},{"expression":{"arguments":[{"id":7053,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7007,"src":"1916:5:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7054,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7009,"src":"1923:7:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7055,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7011,"src":"1932:5:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7052,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6896,"src":"1907:8:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1907:31:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7057,"nodeType":"ExpressionStatement","src":"1907:31:52"}]},"documentation":{"id":7005,"nodeType":"StructuredDocumentation","src":"1382:50:52","text":" @dev See {IERC20Permit-permit}."},"functionSelector":"d505accf","id":7059,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","overrides":{"id":7021,"nodeType":"OverrideSpecifier","overrides":[],"src":"1626:8:52"},"parameters":{"id":7020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7007,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":7059,"src":"1462:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7006,"name":"address","nodeType":"ElementaryTypeName","src":"1462:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7009,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":7059,"src":"1485:15:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7008,"name":"address","nodeType":"ElementaryTypeName","src":"1485:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7011,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7059,"src":"1510:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7010,"name":"uint256","nodeType":"ElementaryTypeName","src":"1510:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7013,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":7059,"src":"1533:16:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7012,"name":"uint256","nodeType":"ElementaryTypeName","src":"1533:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7015,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":7059,"src":"1559:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7014,"name":"uint8","nodeType":"ElementaryTypeName","src":"1559:5:52","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":7017,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":7059,"src":"1576:9:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7016,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1576:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7019,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":7059,"src":"1595:9:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7018,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1595:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1452:158:52"},"returnParameters":{"id":7022,"nodeType":"ParameterList","parameters":[],"src":"1635:0:52"},"scope":7085,"src":"1437:508:52","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1993],"body":{"id":7072,"nodeType":"Block","src":"2076:43:52","statements":[{"expression":{"arguments":[{"id":7069,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7062,"src":"2106:5:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7068,"name":"getNextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3485,"src":"2093:12:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":7070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2093:19:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7067,"id":7071,"nodeType":"Return","src":"2086:26:52"}]},"documentation":{"id":7060,"nodeType":"StructuredDocumentation","src":"1951:50:52","text":" @dev See {IERC20Permit-nonces}."},"functionSelector":"7ecebe00","id":7073,"implemented":true,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","overrides":{"id":7064,"nodeType":"OverrideSpecifier","overrides":[],"src":"2049:8:52"},"parameters":{"id":7063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7062,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":7073,"src":"2022:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7061,"name":"address","nodeType":"ElementaryTypeName","src":"2022:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2021:15:52"},"returnParameters":{"id":7067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7066,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7073,"src":"2067:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7065,"name":"uint256","nodeType":"ElementaryTypeName","src":"2067:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2066:9:52"},"scope":7085,"src":"2006:113:52","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1999],"body":{"id":7083,"nodeType":"Block","src":"2312:44:52","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7080,"name":"getDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3472,"src":"2329:18:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":7081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2329:20:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7079,"id":7082,"nodeType":"Return","src":"2322:27:52"}]},"documentation":{"id":7074,"nodeType":"StructuredDocumentation","src":"2125:60:52","text":" @dev See {IERC20Permit-DOMAIN_SEPARATOR}."},"functionSelector":"3644e515","id":7084,"implemented":true,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","overrides":{"id":7076,"nodeType":"OverrideSpecifier","overrides":[],"src":"2285:8:52"},"parameters":{"id":7075,"nodeType":"ParameterList","parameters":[],"src":"2268:2:52"},"returnParameters":{"id":7079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7078,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7084,"src":"2303:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7077,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2303:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2302:9:52"},"scope":7085,"src":"2243:113:52","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":7086,"src":"742:1616:52"}],"src":"33:2326:52"},"id":52},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","exportedSymbols":{"EnumerableSet":[7538]},"id":7539,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7087,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"406:23:53"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":7088,"nodeType":"ImportDirective","scope":7539,"sourceUnit":1744,"src":"431:90:53","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":7089,"nodeType":"StructuredDocumentation","src":"523:686:53","text":" @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n // Add the library methods\n using EnumerableSet for EnumerableSet.AddressSet;\n // Declare a set state variable\n EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported."},"fullyImplemented":true,"id":7538,"linearizedBaseContracts":[7538],"name":"EnumerableSet","nodeType":"ContractDefinition","nodes":[{"canonicalName":"EnumerableSet.AddressSet","id":7097,"members":[{"constant":false,"id":7092,"mutability":"mutable","name":"_values","nodeType":"VariableDeclaration","scope":7097,"src":"1503:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7090,"name":"address","nodeType":"ElementaryTypeName","src":"1503:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7091,"nodeType":"ArrayTypeName","src":"1503:9:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":7096,"mutability":"mutable","name":"_indexes","nodeType":"VariableDeclaration","scope":7097,"src":"1653:36:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":7095,"keyType":{"id":7093,"name":"address","nodeType":"ElementaryTypeName","src":"1661:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1653:27:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":7094,"name":"uint256","nodeType":"ElementaryTypeName","src":"1672:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"AddressSet","nodeType":"StructDefinition","scope":7538,"src":"1442:254:53","visibility":"public"},{"body":{"id":7137,"nodeType":"Block","src":"1927:334:53","statements":[{"condition":{"id":7111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1941:21:53","subExpression":{"arguments":[{"id":7108,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7100,"src":"1951:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},{"id":7109,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7102,"src":"1956:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7107,"name":"contains","nodeType":"Identifier","overloadedDeclarations":[7241,7465],"referencedDeclaration":7241,"src":"1942:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$7097_storage_ptr_$_t_address_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)"}},"id":7110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1942:20:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7135,"nodeType":"Block","src":"2218:37:53","statements":[{"expression":{"hexValue":"66616c7365","id":7133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2239:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":7106,"id":7134,"nodeType":"Return","src":"2232:12:53"}]},"id":7136,"nodeType":"IfStatement","src":"1937:318:53","trueBody":{"id":7132,"nodeType":"Block","src":"1964:248:53","statements":[{"expression":{"arguments":[{"id":7117,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7102,"src":"1995:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":7112,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7100,"src":"1978:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7115,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7092,"src":"1978:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"1978:16:53","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":7118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1978:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7119,"nodeType":"ExpressionStatement","src":"1978:23:53"},{"expression":{"id":7128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7120,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7100,"src":"2136:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7123,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7096,"src":"2136:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7124,"indexExpression":{"id":7122,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7102,"src":"2149:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2136:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":7125,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7100,"src":"2158:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7126,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7092,"src":"2158:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2158:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2136:40:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7129,"nodeType":"ExpressionStatement","src":"2136:40:53"},{"expression":{"hexValue":"74727565","id":7130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2197:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7106,"id":7131,"nodeType":"Return","src":"2190:11:53"}]}}]},"documentation":{"id":7098,"nodeType":"StructuredDocumentation","src":"1702:144:53","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, if it was not already present."},"id":7138,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":7103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7100,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7138,"src":"1864:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7099,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7097,"src":"1864:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7102,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7138,"src":"1888:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7101,"name":"address","nodeType":"ElementaryTypeName","src":"1888:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1863:39:53"},"returnParameters":{"id":7106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7105,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7138,"src":"1921:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7104,"name":"bool","nodeType":"ElementaryTypeName","src":"1921:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1920:6:53"},"scope":7538,"src":"1851:410:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7222,"nodeType":"Block","src":"2508:1388:53","statements":[{"assignments":[7149],"declarations":[{"constant":false,"id":7149,"mutability":"mutable","name":"valueIndex","nodeType":"VariableDeclaration","scope":7222,"src":"2618:18:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7148,"name":"uint256","nodeType":"ElementaryTypeName","src":"2618:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7154,"initialValue":{"baseExpression":{"expression":{"id":7150,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"2639:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7151,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7096,"src":"2639:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7153,"indexExpression":{"id":7152,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7143,"src":"2652:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2639:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2618:40:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7155,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7149,"src":"2673:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2687:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2673:15:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7220,"nodeType":"Block","src":"3853:37:53","statements":[{"expression":{"hexValue":"66616c7365","id":7218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3874:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":7147,"id":7219,"nodeType":"Return","src":"3867:12:53"}]},"id":7221,"nodeType":"IfStatement","src":"2669:1221:53","trueBody":{"id":7217,"nodeType":"Block","src":"2690:1157:53","statements":[{"assignments":[7159],"declarations":[{"constant":false,"id":7159,"mutability":"mutable","name":"toDeleteIndex","nodeType":"VariableDeclaration","scope":7217,"src":"3042:21:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7158,"name":"uint256","nodeType":"ElementaryTypeName","src":"3042:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7163,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7160,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7149,"src":"3066:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3079:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3066:14:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3042:38:53"},{"assignments":[7165],"declarations":[{"constant":false,"id":7165,"mutability":"mutable","name":"lastIndex","nodeType":"VariableDeclaration","scope":7217,"src":"3094:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7164,"name":"uint256","nodeType":"ElementaryTypeName","src":"3094:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7171,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7166,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"3114:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7167,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7092,"src":"3114:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3114:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3135:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3114:22:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3094:42:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7172,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7159,"src":"3236:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7173,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7165,"src":"3253:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3236:26:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7201,"nodeType":"IfStatement","src":"3232:389:53","trueBody":{"id":7200,"nodeType":"Block","src":"3264:357:53","statements":[{"assignments":[7176],"declarations":[{"constant":false,"id":7176,"mutability":"mutable","name":"lastValue","nodeType":"VariableDeclaration","scope":7200,"src":"3282:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7175,"name":"address","nodeType":"ElementaryTypeName","src":"3282:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7181,"initialValue":{"baseExpression":{"expression":{"id":7177,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"3302:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7178,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7092,"src":"3302:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7180,"indexExpression":{"id":7179,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7165,"src":"3314:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3302:22:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3282:42:53"},{"expression":{"id":7188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7182,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"3424:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7185,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7092,"src":"3424:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7186,"indexExpression":{"id":7184,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7159,"src":"3436:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3424:26:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7187,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7176,"src":"3453:9:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3424:38:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7189,"nodeType":"ExpressionStatement","src":"3424:38:53"},{"expression":{"id":7198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7190,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"3536:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7193,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7096,"src":"3536:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7194,"indexExpression":{"id":7192,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7176,"src":"3549:9:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3536:23:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7195,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7159,"src":"3562:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3578:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3562:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3536:43:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7199,"nodeType":"ExpressionStatement","src":"3536:43:53"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":7202,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"3699:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7205,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7092,"src":"3699:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"3699:15:53","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3699:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7208,"nodeType":"ExpressionStatement","src":"3699:17:53"},{"expression":{"id":7213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"3784:26:53","subExpression":{"baseExpression":{"expression":{"id":7209,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"3791:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7210,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7096,"src":"3791:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7212,"indexExpression":{"id":7211,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7143,"src":"3804:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3791:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7214,"nodeType":"ExpressionStatement","src":"3784:26:53"},{"expression":{"hexValue":"74727565","id":7215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3832:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7147,"id":7216,"nodeType":"Return","src":"3825:11:53"}]}}]},"documentation":{"id":7139,"nodeType":"StructuredDocumentation","src":"2267:157:53","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":7223,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":7144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7141,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7223,"src":"2445:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7140,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7097,"src":"2445:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7143,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7223,"src":"2469:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7142,"name":"address","nodeType":"ElementaryTypeName","src":"2469:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2444:39:53"},"returnParameters":{"id":7147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7146,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7223,"src":"2502:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7145,"name":"bool","nodeType":"ElementaryTypeName","src":"2502:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2501:6:53"},"scope":7538,"src":"2429:1467:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7240,"nodeType":"Block","src":"4063:48:53","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":7233,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7226,"src":"4080:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7234,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7096,"src":"4080:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7236,"indexExpression":{"id":7235,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7228,"src":"4093:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4080:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4103:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4080:24:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7232,"id":7239,"nodeType":"Return","src":"4073:31:53"}]},"documentation":{"id":7224,"nodeType":"StructuredDocumentation","src":"3902:70:53","text":" @dev Returns true if the value is in the set. O(1)."},"id":7241,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":7229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7226,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7241,"src":"3995:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7225,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7097,"src":"3995:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7228,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7241,"src":"4019:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7227,"name":"address","nodeType":"ElementaryTypeName","src":"4019:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3994:39:53"},"returnParameters":{"id":7232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7231,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7241,"src":"4057:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7230,"name":"bool","nodeType":"ElementaryTypeName","src":"4057:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4056:6:53"},"scope":7538,"src":"3977:134:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7253,"nodeType":"Block","src":"4264:42:53","statements":[{"expression":{"expression":{"expression":{"id":7249,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7244,"src":"4281:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7250,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7092,"src":"4281:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4281:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7248,"id":7252,"nodeType":"Return","src":"4274:25:53"}]},"documentation":{"id":7242,"nodeType":"StructuredDocumentation","src":"4117:70:53","text":" @dev Returns the number of values on the set. O(1)."},"id":7254,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":7245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7244,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7254,"src":"4208:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7243,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7097,"src":"4208:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"4207:24:53"},"returnParameters":{"id":7248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7247,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7254,"src":"4255:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7246,"name":"uint256","nodeType":"ElementaryTypeName","src":"4255:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4254:9:53"},"scope":7538,"src":"4192:114:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7279,"nodeType":"Block","src":"4731:116:53","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7265,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7257,"src":"4750:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7266,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7092,"src":"4750:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4750:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7268,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7259,"src":"4771:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4750:26:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7270,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"4778:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":7271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1295,"src":"4778:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7264,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"4741:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4741:58:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7273,"nodeType":"ExpressionStatement","src":"4741:58:53"},{"expression":{"arguments":[{"id":7275,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7257,"src":"4829:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},{"id":7276,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7259,"src":"4834:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7274,"name":"unchecked_at","nodeType":"Identifier","overloadedDeclarations":[7296,7520],"referencedDeclaration":7296,"src":"4816:12:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$7097_storage_ptr_$_t_uint256_$returns$_t_address_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":7277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4816:24:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":7263,"id":7278,"nodeType":"Return","src":"4809:31:53"}]},"documentation":{"id":7255,"nodeType":"StructuredDocumentation","src":"4312:331:53","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":7280,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":7260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7257,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7280,"src":"4660:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7256,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7097,"src":"4660:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7259,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":7280,"src":"4684:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7258,"name":"uint256","nodeType":"ElementaryTypeName","src":"4684:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4659:39:53"},"returnParameters":{"id":7263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7262,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7280,"src":"4722:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7261,"name":"address","nodeType":"ElementaryTypeName","src":"4722:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4721:9:53"},"scope":7538,"src":"4648:199:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7295,"nodeType":"Block","src":"5305:42:53","statements":[{"expression":{"baseExpression":{"expression":{"id":7290,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7283,"src":"5322:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7291,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7092,"src":"5322:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7293,"indexExpression":{"id":7292,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7285,"src":"5334:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5322:18:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":7289,"id":7294,"nodeType":"Return","src":"5315:25:53"}]},"documentation":{"id":7281,"nodeType":"StructuredDocumentation","src":"4853:301:53","text":" @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n than {length}). O(1).\n This function performs one less storage read than {at}, but should only be used when `index` is known to be\n within bounds."},"id":7296,"implemented":true,"kind":"function","modifiers":[],"name":"unchecked_at","nodeType":"FunctionDefinition","parameters":{"id":7286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7283,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7296,"src":"5234:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7282,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7097,"src":"5234:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7285,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":7296,"src":"5258:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7284,"name":"uint256","nodeType":"ElementaryTypeName","src":"5258:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5233:39:53"},"returnParameters":{"id":7289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7288,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7296,"src":"5296:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7287,"name":"address","nodeType":"ElementaryTypeName","src":"5296:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5295:9:53"},"scope":7538,"src":"5212:135:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7312,"nodeType":"Block","src":"5444:47:53","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":7305,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7298,"src":"5461:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7306,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7096,"src":"5461:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7308,"indexExpression":{"id":7307,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7300,"src":"5474:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5461:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5483:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5461:23:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7304,"id":7311,"nodeType":"Return","src":"5454:30:53"}]},"id":7313,"implemented":true,"kind":"function","modifiers":[],"name":"rawIndexOf","nodeType":"FunctionDefinition","parameters":{"id":7301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7298,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7313,"src":"5373:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7297,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7097,"src":"5373:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7300,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7313,"src":"5397:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7299,"name":"address","nodeType":"ElementaryTypeName","src":"5397:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5372:39:53"},"returnParameters":{"id":7304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7303,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7313,"src":"5435:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7302,"name":"uint256","nodeType":"ElementaryTypeName","src":"5435:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5434:9:53"},"scope":7538,"src":"5353:138:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSet.Bytes32Set","id":7321,"members":[{"constant":false,"id":7316,"mutability":"mutable","name":"_values","nodeType":"VariableDeclaration","scope":7321,"src":"5558:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7314,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5558:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7315,"nodeType":"ArrayTypeName","src":"5558:9:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":7320,"mutability":"mutable","name":"_indexes","nodeType":"VariableDeclaration","scope":7321,"src":"5708:36:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":7319,"keyType":{"id":7317,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5716:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"5708:27:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueType":{"id":7318,"name":"uint256","nodeType":"ElementaryTypeName","src":"5727:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"Bytes32Set","nodeType":"StructDefinition","scope":7538,"src":"5497:254:53","visibility":"public"},{"body":{"id":7361,"nodeType":"Block","src":"5997:334:53","statements":[{"condition":{"id":7335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6011:21:53","subExpression":{"arguments":[{"id":7332,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7324,"src":"6021:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},{"id":7333,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7326,"src":"6026:5:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7331,"name":"contains","nodeType":"Identifier","overloadedDeclarations":[7241,7465],"referencedDeclaration":7465,"src":"6012:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Bytes32Set_$7321_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) view returns (bool)"}},"id":7334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6012:20:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7359,"nodeType":"Block","src":"6288:37:53","statements":[{"expression":{"hexValue":"66616c7365","id":7357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6309:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":7330,"id":7358,"nodeType":"Return","src":"6302:12:53"}]},"id":7360,"nodeType":"IfStatement","src":"6007:318:53","trueBody":{"id":7356,"nodeType":"Block","src":"6034:248:53","statements":[{"expression":{"arguments":[{"id":7341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7326,"src":"6065:5:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"id":7336,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7324,"src":"6048:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7339,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7316,"src":"6048:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"6048:16:53","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":7342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6048:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7343,"nodeType":"ExpressionStatement","src":"6048:23:53"},{"expression":{"id":7352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7344,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7324,"src":"6206:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7347,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7320,"src":"6206:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7348,"indexExpression":{"id":7346,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7326,"src":"6219:5:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6206:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":7349,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7324,"src":"6228:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7350,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7316,"src":"6228:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6228:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6206:40:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7353,"nodeType":"ExpressionStatement","src":"6206:40:53"},{"expression":{"hexValue":"74727565","id":7354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6267:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7330,"id":7355,"nodeType":"Return","src":"6260:11:53"}]}}]},"documentation":{"id":7322,"nodeType":"StructuredDocumentation","src":"5757:159:53","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":7362,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":7327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7324,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7362,"src":"5934:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7323,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7321,"src":"5934:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7326,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7362,"src":"5958:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7325,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5958:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5933:39:53"},"returnParameters":{"id":7330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7329,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7362,"src":"5991:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7328,"name":"bool","nodeType":"ElementaryTypeName","src":"5991:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5990:6:53"},"scope":7538,"src":"5921:410:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7446,"nodeType":"Block","src":"6571:1388:53","statements":[{"assignments":[7373],"declarations":[{"constant":false,"id":7373,"mutability":"mutable","name":"valueIndex","nodeType":"VariableDeclaration","scope":7446,"src":"6681:18:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7372,"name":"uint256","nodeType":"ElementaryTypeName","src":"6681:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7378,"initialValue":{"baseExpression":{"expression":{"id":7374,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7365,"src":"6702:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7375,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7320,"src":"6702:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7377,"indexExpression":{"id":7376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7367,"src":"6715:5:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6702:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6681:40:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7379,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7373,"src":"6736:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6750:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6736:15:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7444,"nodeType":"Block","src":"7916:37:53","statements":[{"expression":{"hexValue":"66616c7365","id":7442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7937:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":7371,"id":7443,"nodeType":"Return","src":"7930:12:53"}]},"id":7445,"nodeType":"IfStatement","src":"6732:1221:53","trueBody":{"id":7441,"nodeType":"Block","src":"6753:1157:53","statements":[{"assignments":[7383],"declarations":[{"constant":false,"id":7383,"mutability":"mutable","name":"toDeleteIndex","nodeType":"VariableDeclaration","scope":7441,"src":"7105:21:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7382,"name":"uint256","nodeType":"ElementaryTypeName","src":"7105:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7387,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7384,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7373,"src":"7129:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7142:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7129:14:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7105:38:53"},{"assignments":[7389],"declarations":[{"constant":false,"id":7389,"mutability":"mutable","name":"lastIndex","nodeType":"VariableDeclaration","scope":7441,"src":"7157:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7388,"name":"uint256","nodeType":"ElementaryTypeName","src":"7157:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7395,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7390,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7365,"src":"7177:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7391,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7316,"src":"7177:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7177:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7198:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7177:22:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7157:42:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7396,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7383,"src":"7299:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7397,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7389,"src":"7316:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7299:26:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7425,"nodeType":"IfStatement","src":"7295:389:53","trueBody":{"id":7424,"nodeType":"Block","src":"7327:357:53","statements":[{"assignments":[7400],"declarations":[{"constant":false,"id":7400,"mutability":"mutable","name":"lastValue","nodeType":"VariableDeclaration","scope":7424,"src":"7345:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7399,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7345:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7405,"initialValue":{"baseExpression":{"expression":{"id":7401,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7365,"src":"7365:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7402,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7316,"src":"7365:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7404,"indexExpression":{"id":7403,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7389,"src":"7377:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7365:22:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7345:42:53"},{"expression":{"id":7412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7406,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7365,"src":"7487:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7409,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7316,"src":"7487:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7410,"indexExpression":{"id":7408,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7383,"src":"7499:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7487:26:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7411,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7400,"src":"7516:9:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7487:38:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7413,"nodeType":"ExpressionStatement","src":"7487:38:53"},{"expression":{"id":7422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7414,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7365,"src":"7599:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7417,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7320,"src":"7599:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7418,"indexExpression":{"id":7416,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7400,"src":"7612:9:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7599:23:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7419,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7383,"src":"7625:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7641:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7625:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7599:43:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7423,"nodeType":"ExpressionStatement","src":"7599:43:53"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":7426,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7365,"src":"7762:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7429,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7316,"src":"7762:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"7762:15:53","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7762:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7432,"nodeType":"ExpressionStatement","src":"7762:17:53"},{"expression":{"id":7437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"7847:26:53","subExpression":{"baseExpression":{"expression":{"id":7433,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7365,"src":"7854:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7434,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7320,"src":"7854:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7436,"indexExpression":{"id":7435,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7367,"src":"7867:5:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7854:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7438,"nodeType":"ExpressionStatement","src":"7847:26:53"},{"expression":{"hexValue":"74727565","id":7439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7895:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7371,"id":7440,"nodeType":"Return","src":"7888:11:53"}]}}]},"documentation":{"id":7363,"nodeType":"StructuredDocumentation","src":"6337:150:53","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was present."},"id":7447,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":7368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7365,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7447,"src":"6508:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7364,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7321,"src":"6508:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7367,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7447,"src":"6532:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7366,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6532:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6507:39:53"},"returnParameters":{"id":7371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7370,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7447,"src":"6565:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7369,"name":"bool","nodeType":"ElementaryTypeName","src":"6565:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6564:6:53"},"scope":7538,"src":"6492:1467:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7464,"nodeType":"Block","src":"8126:48:53","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":7457,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7450,"src":"8143:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7458,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7320,"src":"8143:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7460,"indexExpression":{"id":7459,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7452,"src":"8156:5:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8143:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8166:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8143:24:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7456,"id":7463,"nodeType":"Return","src":"8136:31:53"}]},"documentation":{"id":7448,"nodeType":"StructuredDocumentation","src":"7965:70:53","text":" @dev Returns true if the value is in the set. O(1)."},"id":7465,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":7453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7450,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7465,"src":"8058:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7449,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7321,"src":"8058:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7452,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7465,"src":"8082:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7451,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8082:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8057:39:53"},"returnParameters":{"id":7456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7455,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7465,"src":"8120:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7454,"name":"bool","nodeType":"ElementaryTypeName","src":"8120:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8119:6:53"},"scope":7538,"src":"8040:134:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7477,"nodeType":"Block","src":"8327:42:53","statements":[{"expression":{"expression":{"expression":{"id":7473,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7468,"src":"8344:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7474,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7316,"src":"8344:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8344:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7472,"id":7476,"nodeType":"Return","src":"8337:25:53"}]},"documentation":{"id":7466,"nodeType":"StructuredDocumentation","src":"8180:70:53","text":" @dev Returns the number of values on the set. O(1)."},"id":7478,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":7469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7468,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7478,"src":"8271:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7467,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7321,"src":"8271:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"}],"src":"8270:24:53"},"returnParameters":{"id":7472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7471,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7478,"src":"8318:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7470,"name":"uint256","nodeType":"ElementaryTypeName","src":"8318:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8317:9:53"},"scope":7538,"src":"8255:114:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7503,"nodeType":"Block","src":"8794:116:53","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7489,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7481,"src":"8813:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7490,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7316,"src":"8813:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8813:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7492,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7483,"src":"8834:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8813:26:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7494,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"8841:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":7495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1295,"src":"8841:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7488,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"8804:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8804:58:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7497,"nodeType":"ExpressionStatement","src":"8804:58:53"},{"expression":{"arguments":[{"id":7499,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7481,"src":"8892:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},{"id":7500,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7483,"src":"8897:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7498,"name":"unchecked_at","nodeType":"Identifier","overloadedDeclarations":[7296,7520],"referencedDeclaration":7520,"src":"8879:12:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Bytes32Set_$7321_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Bytes32Set storage pointer,uint256) view returns (bytes32)"}},"id":7501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8879:24:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7487,"id":7502,"nodeType":"Return","src":"8872:31:53"}]},"documentation":{"id":7479,"nodeType":"StructuredDocumentation","src":"8375:331:53","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":7504,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":7484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7481,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7504,"src":"8723:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7480,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7321,"src":"8723:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7483,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":7504,"src":"8747:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7482,"name":"uint256","nodeType":"ElementaryTypeName","src":"8747:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8722:39:53"},"returnParameters":{"id":7487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7486,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7504,"src":"8785:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7485,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8785:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8784:9:53"},"scope":7538,"src":"8711:199:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7519,"nodeType":"Block","src":"9368:42:53","statements":[{"expression":{"baseExpression":{"expression":{"id":7514,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"9385:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7515,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7316,"src":"9385:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":7517,"indexExpression":{"id":7516,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7509,"src":"9397:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9385:18:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7513,"id":7518,"nodeType":"Return","src":"9378:25:53"}]},"documentation":{"id":7505,"nodeType":"StructuredDocumentation","src":"8916:301:53","text":" @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n than {length}). O(1).\n This function performs one less storage read than {at}, but should only be used when `index` is known to be\n within bounds."},"id":7520,"implemented":true,"kind":"function","modifiers":[],"name":"unchecked_at","nodeType":"FunctionDefinition","parameters":{"id":7510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7507,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7520,"src":"9297:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7506,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7321,"src":"9297:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7509,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":7520,"src":"9321:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7508,"name":"uint256","nodeType":"ElementaryTypeName","src":"9321:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9296:39:53"},"returnParameters":{"id":7513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7512,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7520,"src":"9359:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7511,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9359:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9358:9:53"},"scope":7538,"src":"9275:135:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7536,"nodeType":"Block","src":"9507:47:53","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":7529,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7522,"src":"9524:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":7530,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7320,"src":"9524:12:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":7532,"indexExpression":{"id":7531,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7524,"src":"9537:5:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9524:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9546:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9524:23:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7528,"id":7535,"nodeType":"Return","src":"9517:30:53"}]},"id":7537,"implemented":true,"kind":"function","modifiers":[],"name":"rawIndexOf","nodeType":"FunctionDefinition","parameters":{"id":7525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7522,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7537,"src":"9436:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":7521,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":7321,"src":"9436:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$7321_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":7524,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7537,"src":"9460:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7523,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9460:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9435:39:53"},"returnParameters":{"id":7528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7527,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7537,"src":"9498:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7526,"name":"uint256","nodeType":"ElementaryTypeName","src":"9498:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9497:9:53"},"scope":7538,"src":"9416:138:53","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":7539,"src":"1210:8346:53"}],"src":"406:9151:53"},"id":53},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","exportedSymbols":{"ReentrancyGuard":[7594]},"id":7595,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7540,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"374:23:54"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":7541,"nodeType":"ImportDirective","scope":7595,"sourceUnit":1744,"src":"399:90:54","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":7542,"nodeType":"StructuredDocumentation","src":"491:750:54","text":" @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]."},"fullyImplemented":true,"id":7594,"linearizedBaseContracts":[7594],"name":"ReentrancyGuard","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":7545,"mutability":"constant","name":"_NOT_ENTERED","nodeType":"VariableDeclaration","scope":7594,"src":"2030:41:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7543,"name":"uint256","nodeType":"ElementaryTypeName","src":"2030:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":7544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2070:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":7548,"mutability":"constant","name":"_ENTERED","nodeType":"VariableDeclaration","scope":7594,"src":"2077:37:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7546,"name":"uint256","nodeType":"ElementaryTypeName","src":"2077:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":7547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2113:1:54","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"constant":false,"id":7550,"mutability":"mutable","name":"_status","nodeType":"VariableDeclaration","scope":7594,"src":"2121:23:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7549,"name":"uint256","nodeType":"ElementaryTypeName","src":"2121:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":7557,"nodeType":"Block","src":"2165:39:54","statements":[{"expression":{"id":7555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7553,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7550,"src":"2175:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7554,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7545,"src":"2185:12:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2175:22:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7556,"nodeType":"ExpressionStatement","src":"2175:22:54"}]},"id":7558,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":7551,"nodeType":"ParameterList","parameters":[],"src":"2162:2:54"},"returnParameters":{"id":7552,"nodeType":"ParameterList","parameters":[],"src":"2165:0:54"},"scope":7594,"src":"2151:53:54","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7568,"nodeType":"Block","src":"2603:77:54","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7561,"name":"_enterNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7585,"src":"2613:18:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2613:20:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7563,"nodeType":"ExpressionStatement","src":"2613:20:54"},{"id":7564,"nodeType":"PlaceholderStatement","src":"2643:1:54"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7565,"name":"_exitNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7593,"src":"2654:17:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2654:19:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7567,"nodeType":"ExpressionStatement","src":"2654:19:54"}]},"documentation":{"id":7559,"nodeType":"StructuredDocumentation","src":"2210:364:54","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and make it call a\n `private` function that does the actual work."},"id":7569,"name":"nonReentrant","nodeType":"ModifierDefinition","parameters":{"id":7560,"nodeType":"ParameterList","parameters":[],"src":"2600:2:54"},"src":"2579:101:54","virtual":false,"visibility":"internal"},{"body":{"id":7584,"nodeType":"Block","src":"2724:233:54","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7573,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7550,"src":"2818:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7574,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7548,"src":"2829:8:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2818:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7576,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"2839:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":7577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"REENTRANCY","nodeType":"MemberAccess","referencedDeclaration":1508,"src":"2839:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7572,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"2809:8:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2809:48:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7579,"nodeType":"ExpressionStatement","src":"2809:48:54"},{"expression":{"id":7582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7580,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7550,"src":"2932:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7581,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7548,"src":"2942:8:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2932:18:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7583,"nodeType":"ExpressionStatement","src":"2932:18:54"}]},"id":7585,"implemented":true,"kind":"function","modifiers":[],"name":"_enterNonReentrant","nodeType":"FunctionDefinition","parameters":{"id":7570,"nodeType":"ParameterList","parameters":[],"src":"2713:2:54"},"returnParameters":{"id":7571,"nodeType":"ParameterList","parameters":[],"src":"2724:0:54"},"scope":7594,"src":"2686:271:54","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":7592,"nodeType":"Block","src":"3000:171:54","statements":[{"expression":{"id":7590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7588,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7550,"src":"3142:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7589,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7545,"src":"3152:12:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3142:22:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7591,"nodeType":"ExpressionStatement","src":"3142:22:54"}]},"id":7593,"implemented":true,"kind":"function","modifiers":[],"name":"_exitNonReentrant","nodeType":"FunctionDefinition","parameters":{"id":7586,"nodeType":"ParameterList","parameters":[],"src":"2989:2:54"},"returnParameters":{"id":7587,"nodeType":"ParameterList","parameters":[],"src":"3000:0:54"},"scope":7594,"src":"2963:208:54","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":7595,"src":"1242:1931:54"}],"src":"374:2800:54"},"id":54},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol","exportedSymbols":{"SafeCast":[7649]},"id":7650,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7596,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:55"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":7597,"nodeType":"ImportDirective","scope":7650,"sourceUnit":1744,"src":"58:90:55","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":7598,"nodeType":"StructuredDocumentation","src":"150:709:55","text":" @dev Wrappers over Solidity's uintXX/intXX 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.\n Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\n all math on `uint256` and `int256` and then downcasting."},"fullyImplemented":true,"id":7649,"linearizedBaseContracts":[7649],"name":"SafeCast","nodeType":"ContractDefinition","nodes":[{"body":{"id":7621,"nodeType":"Block","src":"1117:114:55","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7607,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7601,"src":"1136:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":7608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1145:3:55","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"1136:12:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1152:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1136:17:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7612,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"1155:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":7613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SAFE_CAST_VALUE_CANT_FIT_INT256","nodeType":"MemberAccess","referencedDeclaration":1571,"src":"1155:38:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7606,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"1127:8:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1127:67:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7615,"nodeType":"ExpressionStatement","src":"1127:67:55"},{"expression":{"arguments":[{"id":7618,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7601,"src":"1218:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1211:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":7616,"name":"int256","nodeType":"ElementaryTypeName","src":"1211:6:55","typeDescriptions":{}}},"id":7619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1211:13:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":7605,"id":7620,"nodeType":"Return","src":"1204:20:55"}]},"documentation":{"id":7599,"nodeType":"StructuredDocumentation","src":"883:165:55","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."},"id":7622,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nodeType":"FunctionDefinition","parameters":{"id":7602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7601,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7622,"src":"1071:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7600,"name":"uint256","nodeType":"ElementaryTypeName","src":"1071:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1070:15:55"},"returnParameters":{"id":7605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7604,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7622,"src":"1109:6:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7603,"name":"int256","nodeType":"ElementaryTypeName","src":"1109:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1108:8:55"},"scope":7649,"src":"1053:178:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7647,"nodeType":"Block","src":"1474:122:55","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7631,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7625,"src":"1493:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":7634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1507:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":7633,"name":"uint64","nodeType":"ElementaryTypeName","src":"1507:6:55","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":7632,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1502:4:55","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1502:12:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":7636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"1502:16:55","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1493:25:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7638,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"1520:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":7639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SAFE_CAST_VALUE_CANT_FIT_UINT64","nodeType":"MemberAccess","referencedDeclaration":1634,"src":"1520:38:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7630,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"1484:8:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1484:75:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7641,"nodeType":"ExpressionStatement","src":"1484:75:55"},{"expression":{"arguments":[{"id":7644,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7625,"src":"1583:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7643,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1576:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":7642,"name":"uint64","nodeType":"ElementaryTypeName","src":"1576:6:55","typeDescriptions":{}}},"id":7645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1576:13:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":7629,"id":7646,"nodeType":"Return","src":"1569:20:55"}]},"documentation":{"id":7623,"nodeType":"StructuredDocumentation","src":"1237:168:55","text":" @dev Converts an unsigned uint256 into an unsigned uint64.\n Requirements:\n - input must be less than or equal to maxUint64."},"id":7648,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nodeType":"FunctionDefinition","parameters":{"id":7626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7625,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7648,"src":"1428:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7624,"name":"uint256","nodeType":"ElementaryTypeName","src":"1428:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1427:15:55"},"returnParameters":{"id":7629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7628,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7648,"src":"1466:6:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7627,"name":"uint64","nodeType":"ElementaryTypeName","src":"1466:6:55","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1465:8:55"},"scope":7649,"src":"1410:186:55","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7650,"src":"860:738:55"}],"src":"33:1566:55"},"id":55},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","exportedSymbols":{"SafeERC20":[7744]},"id":7745,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7651,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"313:23:56"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":7652,"nodeType":"ImportDirective","scope":7745,"sourceUnit":1744,"src":"338:90:56","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":7653,"nodeType":"ImportDirective","scope":7745,"sourceUnit":1965,"src":"429:87:56","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":7654,"nodeType":"StructuredDocumentation","src":"518:457:56","text":" @title SafeERC20\n @dev Wrappers around ERC20 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":7744,"linearizedBaseContracts":[7744],"name":"SafeERC20","nodeType":"ContractDefinition","nodes":[{"body":{"id":7678,"nodeType":"Block","src":"1102:112:56","statements":[{"expression":{"arguments":[{"arguments":[{"id":7666,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7656,"src":"1140:5:56","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}],"id":7665,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1132:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7664,"name":"address","nodeType":"ElementaryTypeName","src":"1132:7:56","typeDescriptions":{}}},"id":7667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1132:14:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":7670,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7656,"src":"1171:5:56","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":7671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":1913,"src":"1171:14:56","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":7672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1171:23:56","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":7673,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7658,"src":"1196:2:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7674,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7660,"src":"1200:5:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7668,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1148:3:56","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7669,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1148:22:56","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":7675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1148:58:56","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"}],"id":7663,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7743,"src":"1112:19:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":7676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1112:95:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7677,"nodeType":"ExpressionStatement","src":"1112:95:56"}]},"id":7679,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nodeType":"FunctionDefinition","parameters":{"id":7661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7656,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":7679,"src":"1031:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":7655,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1031:6:56","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":7658,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":7679,"src":"1053:10:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7657,"name":"address","nodeType":"ElementaryTypeName","src":"1053:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7660,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7679,"src":"1073:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7659,"name":"uint256","nodeType":"ElementaryTypeName","src":"1073:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1021:71:56"},"returnParameters":{"id":7662,"nodeType":"ParameterList","parameters":[],"src":"1102:0:56"},"scope":7744,"src":"1000:214:56","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7706,"nodeType":"Block","src":"1348:122:56","statements":[{"expression":{"arguments":[{"arguments":[{"id":7693,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7681,"src":"1386:5:56","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}],"id":7692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1378:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7691,"name":"address","nodeType":"ElementaryTypeName","src":"1378:7:56","typeDescriptions":{}}},"id":7694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1378:14:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":7697,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7681,"src":"1417:5:56","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":7698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":1945,"src":"1417:18:56","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":7699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1417:27:56","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":7700,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7683,"src":"1446:4:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7701,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7685,"src":"1452:2:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7702,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7687,"src":"1456:5:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7695,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1394:3:56","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7696,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1394:22:56","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":7703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1394:68:56","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"}],"id":7690,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7743,"src":"1358:19:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":7704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1358:105:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7705,"nodeType":"ExpressionStatement","src":"1358:105:56"}]},"id":7707,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":7688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7681,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":7707,"src":"1255:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":7680,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1255:6:56","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":7683,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":7707,"src":"1277:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7682,"name":"address","nodeType":"ElementaryTypeName","src":"1277:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7685,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":7707,"src":"1299:10:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7684,"name":"address","nodeType":"ElementaryTypeName","src":"1299:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7687,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7707,"src":"1319:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7686,"name":"uint256","nodeType":"ElementaryTypeName","src":"1319:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1245:93:56"},"returnParameters":{"id":7689,"nodeType":"ParameterList","parameters":[],"src":"1348:0:56"},"scope":7744,"src":"1220:250:56","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7742,"nodeType":"Block","src":"1881:843:56","statements":[{"assignments":[7716,7718],"declarations":[{"constant":false,"id":7716,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":7742,"src":"2112:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7715,"name":"bool","nodeType":"ElementaryTypeName","src":"2112:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7718,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":7742,"src":"2126:23:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7717,"name":"bytes","nodeType":"ElementaryTypeName","src":"2126:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7723,"initialValue":{"arguments":[{"id":7721,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7712,"src":"2164:4:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":7719,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7710,"src":"2153:5:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2153:10:56","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":7722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2153:16:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2111:58:56"},{"AST":{"nodeType":"YulBlock","src":"2334:156:56","statements":[{"body":{"nodeType":"YulBlock","src":"2366:114:56","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2399:1:56","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2402:1:56","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"2405:14:56"},"nodeType":"YulFunctionCall","src":"2405:16:56"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"2384:14:56"},"nodeType":"YulFunctionCall","src":"2384:38:56"},"nodeType":"YulExpressionStatement","src":"2384:38:56"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2446:1:56","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"2449:14:56"},"nodeType":"YulFunctionCall","src":"2449:16:56"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2439:6:56"},"nodeType":"YulFunctionCall","src":"2439:27:56"},"nodeType":"YulExpressionStatement","src":"2439:27:56"}]},"condition":{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"2354:7:56"},{"kind":"number","nodeType":"YulLiteral","src":"2363:1:56","type":"","value":"0"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2351:2:56"},"nodeType":"YulFunctionCall","src":"2351:14:56"},"nodeType":"YulIf","src":"2348:2:56"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7716,"isOffset":false,"isSlot":false,"src":"2354:7:56","valueSize":1}],"id":7724,"nodeType":"InlineAssembly","src":"2325:165:56"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7726,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7718,"src":"2629:10:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2629:17:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2650:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2629:22:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":7732,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7718,"src":"2666:10:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":7734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2679:4:56","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":7733,"name":"bool","nodeType":"ElementaryTypeName","src":"2679:4:56","typeDescriptions":{}}}],"id":7735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2678:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":7730,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2655:3:56","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7731,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2655:10:56","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":7736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2655:30:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2629:56:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7738,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"2687:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":7739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SAFE_ERC20_CALL_FAILED","nodeType":"MemberAccess","referencedDeclaration":1562,"src":"2687:29:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7725,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"2620:8:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2620:97:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7741,"nodeType":"ExpressionStatement","src":"2620:97:56"}]},"documentation":{"id":7708,"nodeType":"StructuredDocumentation","src":"1476:329:56","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n WARNING: `token` is assumed to be a contract: calls to EOAs will *not* revert."},"id":7743,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nodeType":"FunctionDefinition","parameters":{"id":7713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7710,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":7743,"src":"1839:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7709,"name":"address","nodeType":"ElementaryTypeName","src":"1839:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7712,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":7743,"src":"1854:17:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7711,"name":"bytes","nodeType":"ElementaryTypeName","src":"1854:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1838:34:56"},"returnParameters":{"id":7714,"nodeType":"ParameterList","parameters":[],"src":"1881:0:56"},"scope":7744,"src":"1810:914:56","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":7745,"src":"976:1750:56"}],"src":"313:2414:56"},"id":56},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","exportedSymbols":{"SafeMath":[7822]},"id":7823,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7746,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:57"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":7747,"nodeType":"ImportDirective","scope":7823,"sourceUnit":1744,"src":"58:90:57","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":7748,"nodeType":"StructuredDocumentation","src":"150:563:57","text":" @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n 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":7822,"linearizedBaseContracts":[7822],"name":"SafeMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":7774,"nodeType":"Block","src":"1033:100:57","statements":[{"assignments":[7759],"declarations":[{"constant":false,"id":7759,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":7774,"src":"1043:9:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7758,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7763,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7760,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7751,"src":"1055:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7761,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7753,"src":"1059:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1055:5:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1043:17:57"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7765,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7759,"src":"1079:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":7766,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7751,"src":"1084:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1079:6:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7768,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"1087:6:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":7769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1265,"src":"1087:19:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7764,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"1070:8:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1070:37:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7771,"nodeType":"ExpressionStatement","src":"1070:37:57"},{"expression":{"id":7772,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7759,"src":"1125:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7757,"id":7773,"nodeType":"Return","src":"1118:8:57"}]},"documentation":{"id":7749,"nodeType":"StructuredDocumentation","src":"737:224:57","text":" @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."},"id":7775,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":7754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7751,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7775,"src":"979:9:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7750,"name":"uint256","nodeType":"ElementaryTypeName","src":"979:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7753,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":7775,"src":"990:9:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7752,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"978:22:57"},"returnParameters":{"id":7757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7756,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7775,"src":"1024:7:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7755,"name":"uint256","nodeType":"ElementaryTypeName","src":"1024:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1023:9:57"},"scope":7822,"src":"966:167:57","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7792,"nodeType":"Block","src":"1471:54:57","statements":[{"expression":{"arguments":[{"id":7786,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7778,"src":"1492:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7787,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7780,"src":"1495:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7788,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"1498:6:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":7789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1268,"src":"1498:19:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7785,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[7793,7821],"referencedDeclaration":7821,"src":"1488:3:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1488:30:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7784,"id":7791,"nodeType":"Return","src":"1481:37:57"}]},"documentation":{"id":7776,"nodeType":"StructuredDocumentation","src":"1139:260:57","text":" @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":7793,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":7781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7778,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7793,"src":"1417:9:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7777,"name":"uint256","nodeType":"ElementaryTypeName","src":"1417:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7780,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":7793,"src":"1428:9:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7779,"name":"uint256","nodeType":"ElementaryTypeName","src":"1428:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1416:22:57"},"returnParameters":{"id":7784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7783,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7793,"src":"1462:7:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7782,"name":"uint256","nodeType":"ElementaryTypeName","src":"1462:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1461:9:57"},"scope":7822,"src":"1404:121:57","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7820,"nodeType":"Block","src":"1932:90:57","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7806,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7798,"src":"1951:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":7807,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7796,"src":"1956:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1951:6:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":7809,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7800,"src":"1959:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7805,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"1942:8:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1942:27:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7811,"nodeType":"ExpressionStatement","src":"1942:27:57"},{"assignments":[7813],"declarations":[{"constant":false,"id":7813,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":7820,"src":"1979:9:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7812,"name":"uint256","nodeType":"ElementaryTypeName","src":"1979:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7817,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7814,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7796,"src":"1991:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7815,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7798,"src":"1995:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1991:5:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1979:17:57"},{"expression":{"id":7818,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7813,"src":"2014:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7804,"id":7819,"nodeType":"Return","src":"2007:8:57"}]},"documentation":{"id":7794,"nodeType":"StructuredDocumentation","src":"1531:280:57","text":" @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":7821,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":7801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7796,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":7821,"src":"1838:9:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7795,"name":"uint256","nodeType":"ElementaryTypeName","src":"1838:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7798,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":7821,"src":"1857:9:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7797,"name":"uint256","nodeType":"ElementaryTypeName","src":"1857:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7800,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":7821,"src":"1876:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7799,"name":"uint256","nodeType":"ElementaryTypeName","src":"1876:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1828:71:57"},"returnParameters":{"id":7804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7803,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7821,"src":"1923:7:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7802,"name":"uint256","nodeType":"ElementaryTypeName","src":"1923:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1922:9:57"},"scope":7822,"src":"1816:206:57","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7823,"src":"714:1310:57"}],"src":"33:1992:57"},"id":57},"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol","exportedSymbols":{"ERC20Mock":[7866]},"id":7867,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7824,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:58"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"../openzeppelin/ERC20.sol","id":7825,"nodeType":"ImportDirective","scope":7867,"sourceUnit":6920,"src":"713:35:58","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7826,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":6919,"src":"772:5:58","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$6919","typeString":"contract ERC20"}},"id":7827,"nodeType":"InheritanceSpecifier","src":"772:5:58"}],"contractDependencies":[1964,6919],"contractKind":"contract","fullyImplemented":true,"id":7866,"linearizedBaseContracts":[7866,6919,1964],"name":"ERC20Mock","nodeType":"ContractDefinition","nodes":[{"body":{"id":7838,"nodeType":"Block","src":"858:2:58","statements":[]},"id":7839,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":7834,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7829,"src":"844:4:58","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":7835,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7831,"src":"850:6:58","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":7836,"modifierName":{"id":7833,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6919,"src":"838:5:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$6919_$","typeString":"type(contract ERC20)"}},"nodeType":"ModifierInvocation","src":"838:19:58"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":7832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7829,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":7839,"src":"796:18:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7828,"name":"string","nodeType":"ElementaryTypeName","src":"796:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7831,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":7839,"src":"816:20:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7830,"name":"string","nodeType":"ElementaryTypeName","src":"816:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"795:42:58"},"returnParameters":{"id":7837,"nodeType":"ParameterList","parameters":[],"src":"858:0:58"},"scope":7866,"src":"784:76:58","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":7851,"nodeType":"Block","src":"924:41:58","statements":[{"expression":{"arguments":[{"id":7847,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7841,"src":"940:9:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7848,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7843,"src":"951:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7846,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6812,"src":"934:5:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":7849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"934:24:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7850,"nodeType":"ExpressionStatement","src":"934:24:58"}]},"functionSelector":"40c10f19","id":7852,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":7844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7841,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":7852,"src":"880:17:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7840,"name":"address","nodeType":"ElementaryTypeName","src":"880:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7843,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":7852,"src":"899:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7842,"name":"uint256","nodeType":"ElementaryTypeName","src":"899:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"879:35:58"},"returnParameters":{"id":7845,"nodeType":"ParameterList","parameters":[],"src":"924:0:58"},"scope":7866,"src":"866:99:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":7864,"nodeType":"Block","src":"1026:38:58","statements":[{"expression":{"arguments":[{"id":7860,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7854,"src":"1042:6:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7861,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7856,"src":"1050:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7859,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"1036:5:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":7862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1036:21:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7863,"nodeType":"ExpressionStatement","src":"1036:21:58"}]},"functionSelector":"9dc29fac","id":7865,"implemented":true,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":7857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7854,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":7865,"src":"985:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7853,"name":"address","nodeType":"ElementaryTypeName","src":"985:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7856,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":7865,"src":"1001:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7855,"name":"uint256","nodeType":"ElementaryTypeName","src":"1001:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"984:32:58"},"returnParameters":{"id":7858,"nodeType":"ParameterList","parameters":[],"src":"1026:0:58"},"scope":7866,"src":"971:93:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7867,"src":"750:316:58"}],"src":"688:379:58"},"id":58},"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","exportedSymbols":{"TestToken":[7912]},"id":7913,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7868,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:59"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol","file":"../openzeppelin/ERC20Burnable.sol","id":7869,"nodeType":"ImportDirective","scope":7913,"sourceUnit":6977,"src":"713:43:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol","file":"../openzeppelin/ERC20Permit.sol","id":7870,"nodeType":"ImportDirective","scope":7913,"sourceUnit":7086,"src":"757:41:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"../openzeppelin/ERC20.sol","id":7871,"nodeType":"ImportDirective","scope":7913,"sourceUnit":6920,"src":"799:35:59","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7872,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":6919,"src":"858:5:59","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$6919","typeString":"contract ERC20"}},"id":7873,"nodeType":"InheritanceSpecifier","src":"858:5:59"},{"baseName":{"id":7874,"name":"ERC20Burnable","nodeType":"UserDefinedTypeName","referencedDeclaration":6976,"src":"865:13:59","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Burnable_$6976","typeString":"contract ERC20Burnable"}},"id":7875,"nodeType":"InheritanceSpecifier","src":"865:13:59"},{"baseName":{"id":7876,"name":"ERC20Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":7085,"src":"880:11:59","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Permit_$7085","typeString":"contract ERC20Permit"}},"id":7877,"nodeType":"InheritanceSpecifier","src":"880:11:59"}],"contractDependencies":[1772,1964,2000,3628,6428,6919,6976,7085],"contractKind":"contract","fullyImplemented":true,"id":7912,"linearizedBaseContracts":[7912,7085,3628,6428,1772,2000,6976,6919,1964],"name":"TestToken","nodeType":"ContractDefinition","nodes":[{"body":{"id":7897,"nodeType":"Block","src":"1036:41:59","statements":[{"expression":{"arguments":[{"id":7894,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7883,"src":"1061:8:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":7893,"name":"_setupDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6907,"src":"1046:14:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":7895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1046:24:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7896,"nodeType":"ExpressionStatement","src":"1046:24:59"}]},"id":7898,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":7886,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7879,"src":"1004:4:59","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":7887,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7881,"src":"1010:6:59","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":7888,"modifierName":{"id":7885,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6919,"src":"998:5:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$6919_$","typeString":"type(contract ERC20)"}},"nodeType":"ModifierInvocation","src":"998:19:59"},{"arguments":[{"id":7890,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7879,"src":"1030:4:59","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":7891,"modifierName":{"id":7889,"name":"ERC20Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"1018:11:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20Permit_$7085_$","typeString":"type(contract ERC20Permit)"}},"nodeType":"ModifierInvocation","src":"1018:17:59"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":7884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7879,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":7898,"src":"919:18:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7878,"name":"string","nodeType":"ElementaryTypeName","src":"919:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7881,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":7898,"src":"947:20:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7880,"name":"string","nodeType":"ElementaryTypeName","src":"947:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7883,"mutability":"mutable","name":"decimals","nodeType":"VariableDeclaration","scope":7898,"src":"977:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7882,"name":"uint8","nodeType":"ElementaryTypeName","src":"977:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"909:88:59"},"returnParameters":{"id":7892,"nodeType":"ParameterList","parameters":[],"src":"1036:0:59"},"scope":7912,"src":"898:179:59","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":7910,"nodeType":"Block","src":"1141:41:59","statements":[{"expression":{"arguments":[{"id":7906,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7900,"src":"1157:9:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7907,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7902,"src":"1168:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7905,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6812,"src":"1151:5:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":7908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1151:24:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7909,"nodeType":"ExpressionStatement","src":"1151:24:59"}]},"functionSelector":"40c10f19","id":7911,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":7903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7900,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":7911,"src":"1097:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7899,"name":"address","nodeType":"ElementaryTypeName","src":"1097:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7902,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":7911,"src":"1116:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7901,"name":"uint256","nodeType":"ElementaryTypeName","src":"1116:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1096:35:59"},"returnParameters":{"id":7904,"nodeType":"ParameterList","parameters":[],"src":"1141:0:59"},"scope":7912,"src":"1083:99:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7913,"src":"836:348:59"}],"src":"688:497:59"},"id":59},"@balancer-labs/v2-vault/contracts/AssetHelpers.sol":{"ast":{"absolutePath":"@balancer-labs/v2-vault/contracts/AssetHelpers.sol","exportedSymbols":{"AssetHelpers":[8042]},"id":8043,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7914,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:60"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":7915,"nodeType":"ImportDirective","scope":8043,"sourceUnit":1965,"src":"713:87:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","id":7916,"nodeType":"ImportDirective","scope":8043,"sourceUnit":1887,"src":"801:78:60","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","id":7917,"nodeType":"ImportDirective","scope":8043,"sourceUnit":2659,"src":"880:65:60","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8042,"linearizedBaseContracts":[8042],"name":"AssetHelpers","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":7919,"mutability":"immutable","name":"_weth","nodeType":"VariableDeclaration","scope":8042,"src":"1036:29:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1886","typeString":"contract IWETH"},"typeName":{"id":7918,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":1886,"src":"1036:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1886","typeString":"contract IWETH"}},"visibility":"private"},{"constant":true,"id":7925,"mutability":"constant","name":"_ETH","nodeType":"VariableDeclaration","scope":8042,"src":"1367:42:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7920,"name":"address","nodeType":"ElementaryTypeName","src":"1367:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"30","id":7923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1407:1:60","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":7922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1399:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7921,"name":"address","nodeType":"ElementaryTypeName","src":"1399:7:60","typeDescriptions":{}}},"id":7924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1399:10:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"private"},{"body":{"id":7934,"nodeType":"Block","src":"1440:29:60","statements":[{"expression":{"id":7932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7930,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7919,"src":"1450:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1886","typeString":"contract IWETH"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7931,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7927,"src":"1458:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1886","typeString":"contract IWETH"}},"src":"1450:12:60","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1886","typeString":"contract IWETH"}},"id":7933,"nodeType":"ExpressionStatement","src":"1450:12:60"}]},"id":7935,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":7928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7927,"mutability":"mutable","name":"weth","nodeType":"VariableDeclaration","scope":7935,"src":"1428:10:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1886","typeString":"contract IWETH"},"typeName":{"id":7926,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":1886,"src":"1428:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1886","typeString":"contract IWETH"}},"visibility":"internal"}],"src":"1427:12:60"},"returnParameters":{"id":7929,"nodeType":"ParameterList","parameters":[],"src":"1440:0:60"},"scope":8042,"src":"1416:53:60","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7942,"nodeType":"Block","src":"1575:29:60","statements":[{"expression":{"id":7940,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7919,"src":"1592:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1886","typeString":"contract IWETH"}},"functionReturnParameters":7939,"id":7941,"nodeType":"Return","src":"1585:12:60"}]},"id":7943,"implemented":true,"kind":"function","modifiers":[],"name":"_WETH","nodeType":"FunctionDefinition","parameters":{"id":7936,"nodeType":"ParameterList","parameters":[],"src":"1542:2:60"},"returnParameters":{"id":7939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7938,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7943,"src":"1568:5:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1886","typeString":"contract IWETH"},"typeName":{"id":7937,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":1886,"src":"1568:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1886","typeString":"contract IWETH"}},"visibility":"internal"}],"src":"1567:7:60"},"scope":8042,"src":"1528:76:60","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7958,"nodeType":"Block","src":"1764:46:60","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7953,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7946,"src":"1789:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}],"id":7952,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1781:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7951,"name":"address","nodeType":"ElementaryTypeName","src":"1781:7:60","typeDescriptions":{}}},"id":7954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1781:14:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7955,"name":"_ETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7925,"src":"1799:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1781:22:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7950,"id":7957,"nodeType":"Return","src":"1774:29:60"}]},"documentation":{"id":7944,"nodeType":"StructuredDocumentation","src":"1610:90:60","text":" @dev Returns true if `asset` is the sentinel value that represents ETH."},"id":7959,"implemented":true,"kind":"function","modifiers":[],"name":"_isETH","nodeType":"FunctionDefinition","parameters":{"id":7947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7946,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":7959,"src":"1721:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"},"typeName":{"id":7945,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"1721:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"visibility":"internal"}],"src":"1720:14:60"},"returnParameters":{"id":7950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7949,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7959,"src":"1758:4:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7948,"name":"bool","nodeType":"ElementaryTypeName","src":"1758:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1757:6:60"},"scope":8042,"src":"1705:105:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7977,"nodeType":"Block","src":"2055:66:60","statements":[{"expression":{"condition":{"arguments":[{"id":7968,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7962,"src":"2079:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}],"id":7967,"name":"_isETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7959,"src":"2072:6:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$2658_$returns$_t_bool_$","typeString":"function (contract IAsset) pure returns (bool)"}},"id":7969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2072:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":7973,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7962,"src":"2108:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}],"id":7972,"name":"_asIERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8041,"src":"2098:9:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$2658_$returns$_t_contract$_IERC20_$1964_$","typeString":"function (contract IAsset) pure returns (contract IERC20)"}},"id":7974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2098:16:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":7975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2072:42:60","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":7970,"name":"_WETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7943,"src":"2088:5:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IWETH_$1886_$","typeString":"function () view returns (contract IWETH)"}},"id":7971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2088:7:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1886","typeString":"contract IWETH"}},"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"functionReturnParameters":7966,"id":7976,"nodeType":"Return","src":"2065:49:60"}]},"documentation":{"id":7960,"nodeType":"StructuredDocumentation","src":"1816:161:60","text":" @dev Translates `asset` into an equivalent IERC20 token address. If `asset` represents ETH, it will be translated\n to the WETH contract."},"id":7978,"implemented":true,"kind":"function","modifiers":[],"name":"_translateToIERC20","nodeType":"FunctionDefinition","parameters":{"id":7963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7962,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":7978,"src":"2010:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"},"typeName":{"id":7961,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"2010:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"visibility":"internal"}],"src":"2009:14:60"},"returnParameters":{"id":7966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7965,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7978,"src":"2047:6:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":7964,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2047:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2046:8:60"},"scope":8042,"src":"1982:139:60","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8024,"nodeType":"Block","src":"2310:211:60","statements":[{"assignments":[7991],"declarations":[{"constant":false,"id":7991,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":8024,"src":"2320:22:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":7989,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2320:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":7990,"nodeType":"ArrayTypeName","src":"2320:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":7998,"initialValue":{"arguments":[{"expression":{"id":7995,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7982,"src":"2358:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":7996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2358:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2345:12:60","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":7992,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2349:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":7993,"nodeType":"ArrayTypeName","src":"2349:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":7997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2345:27:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2320:52:60"},{"body":{"id":8020,"nodeType":"Block","src":"2426:66:60","statements":[{"expression":{"id":8018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8010,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7991,"src":"2440:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":8012,"indexExpression":{"id":8011,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8000,"src":"2447:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2440:9:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":8014,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7982,"src":"2471:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":8016,"indexExpression":{"id":8015,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8000,"src":"2478:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2471:9:60","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}],"id":8013,"name":"_translateToIERC20","nodeType":"Identifier","overloadedDeclarations":[7978,8025],"referencedDeclaration":7978,"src":"2452:18:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IAsset_$2658_$returns$_t_contract$_IERC20_$1964_$","typeString":"function (contract IAsset) view returns (contract IERC20)"}},"id":8017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2452:29:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"2440:41:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":8019,"nodeType":"ExpressionStatement","src":"2440:41:60"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8003,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8000,"src":"2402:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8004,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7982,"src":"2406:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":8005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2406:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2402:17:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8021,"initializationExpression":{"assignments":[8000],"declarations":[{"constant":false,"id":8000,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":8021,"src":"2387:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7999,"name":"uint256","nodeType":"ElementaryTypeName","src":"2387:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8002,"initialValue":{"hexValue":"30","id":8001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2399:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2387:13:60"},"loopExpression":{"expression":{"id":8008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2421:3:60","subExpression":{"id":8007,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8000,"src":"2423:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8009,"nodeType":"ExpressionStatement","src":"2421:3:60"},"nodeType":"ForStatement","src":"2382:110:60"},{"expression":{"id":8022,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7991,"src":"2508:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"functionReturnParameters":7987,"id":8023,"nodeType":"Return","src":"2501:13:60"}]},"documentation":{"id":7979,"nodeType":"StructuredDocumentation","src":"2127:86:60","text":" @dev Same as `_translateToIERC20(IAsset)`, but for an entire array."},"id":8025,"implemented":true,"kind":"function","modifiers":[],"name":"_translateToIERC20","nodeType":"FunctionDefinition","parameters":{"id":7983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7982,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":8025,"src":"2246:22:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":7980,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"2246:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"id":7981,"nodeType":"ArrayTypeName","src":"2246:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"}],"src":"2245:24:60"},"returnParameters":{"id":7987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7986,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8025,"src":"2293:15:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":7984,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2293:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":7985,"nodeType":"ArrayTypeName","src":"2293:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"2292:17:60"},"scope":8042,"src":"2218:303:60","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8040,"nodeType":"Block","src":"2826:46:60","statements":[{"expression":{"arguments":[{"arguments":[{"id":8036,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8028,"src":"2858:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}],"id":8035,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2850:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8034,"name":"address","nodeType":"ElementaryTypeName","src":"2850:7:60","typeDescriptions":{}}},"id":8037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2850:14:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8033,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"2843:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":8038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2843:22:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"functionReturnParameters":8032,"id":8039,"nodeType":"Return","src":"2836:29:60"}]},"documentation":{"id":8026,"nodeType":"StructuredDocumentation","src":"2527:230:60","text":" @dev Interprets `asset` as an IERC20 token. This function should only be called on `asset` if `_isETH` previously\n returned false for it, that is, if `asset` is guaranteed not to be the ETH sentinel value."},"id":8041,"implemented":true,"kind":"function","modifiers":[],"name":"_asIERC20","nodeType":"FunctionDefinition","parameters":{"id":8029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8028,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":8041,"src":"2781:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"},"typeName":{"id":8027,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"2781:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"visibility":"internal"}],"src":"2780:14:60"},"returnParameters":{"id":8032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8031,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8041,"src":"2818:6:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":8030,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2818:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2817:8:60"},"scope":8042,"src":"2762:110:60","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":8043,"src":"947:1927:60"}],"src":"688:2187:60"},"id":60},"contracts/BALTokenHolder.sol":{"ast":{"absolutePath":"contracts/BALTokenHolder.sol","exportedSymbols":{"BALTokenHolder":[8147]},"id":8148,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8044,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:61"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","id":8045,"nodeType":"ImportDirective","scope":8148,"sourceUnit":253,"src":"713:84:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol","id":8046,"nodeType":"ImportDirective","scope":8148,"sourceUnit":2052,"src":"798:85:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":8047,"nodeType":"ImportDirective","scope":8148,"sourceUnit":3372,"src":"884:65:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":8048,"nodeType":"ImportDirective","scope":8148,"sourceUnit":4114,"src":"951:88:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":8049,"nodeType":"ImportDirective","scope":8148,"sourceUnit":7745,"src":"1040:79:61","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8051,"name":"IBALTokenHolder","nodeType":"UserDefinedTypeName","referencedDeclaration":2051,"src":"1590:15:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBALTokenHolder_$2051","typeString":"contract IBALTokenHolder"}},"id":8052,"nodeType":"InheritanceSpecifier","src":"1590:15:61"},{"baseName":{"id":8053,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":4113,"src":"1607:23:61","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$4113","typeString":"contract SingletonAuthentication"}},"id":8054,"nodeType":"InheritanceSpecifier","src":"1607:23:61"}],"contractDependencies":[1754,2051,3448,4113],"contractKind":"contract","documentation":{"id":8050,"nodeType":"StructuredDocumentation","src":"1121:441:61","text":" @dev This contract simply holds the BAL token and delegates to Balancer Governance the permission to withdraw it. It\n is intended to serve as the recipient of automated BAL minting via the liquidity mining gauges, allowing for the\n final recipient of the funds to be configurable without having to alter the gauges themselves.\n There is also a separate auxiliary function to sweep any non-BAL tokens sent here by mistake."},"fullyImplemented":true,"id":8147,"linearizedBaseContracts":[8147,4113,3448,2051,1754],"name":"BALTokenHolder","nodeType":"ContractDefinition","nodes":[{"id":8057,"libraryName":{"id":8055,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7744,"src":"1643:9:61","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7744","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1637:27:61","typeName":{"id":8056,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1657:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}},{"constant":false,"id":8059,"mutability":"immutable","name":"_balancerToken","nodeType":"VariableDeclaration","scope":8147,"src":"1670:47:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"},"typeName":{"id":8058,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":252,"src":"1670:14:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"visibility":"private"},{"constant":false,"id":8061,"mutability":"mutable","name":"_name","nodeType":"VariableDeclaration","scope":8147,"src":"1724:20:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":8060,"name":"string","nodeType":"ElementaryTypeName","src":"1724:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":8081,"nodeType":"Block","src":"1888:328:61","statements":[{"expression":{"id":8075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8073,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8059,"src":"2157:14:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8074,"name":"balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8063,"src":"2174:13:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"src":"2157:30:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"id":8076,"nodeType":"ExpressionStatement","src":"2157:30:61"},{"expression":{"id":8079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8077,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8061,"src":"2197:5:61","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8078,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8067,"src":"2205:4:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2197:12:61","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":8080,"nodeType":"ExpressionStatement","src":"2197:12:61"}]},"id":8082,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":8070,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8065,"src":"1881:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}}],"id":8071,"modifierName":{"id":8069,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4113,"src":"1857:23:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$4113_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1857:30:61"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":8068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8063,"mutability":"mutable","name":"balancerToken","nodeType":"VariableDeclaration","scope":8082,"src":"1772:28:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"},"typeName":{"id":8062,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":252,"src":"1772:14:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"visibility":"internal"},{"constant":false,"id":8065,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":8082,"src":"1810:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":8064,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"1810:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":8067,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":8082,"src":"1832:18:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8066,"name":"string","nodeType":"ElementaryTypeName","src":"1832:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1762:94:61"},"returnParameters":{"id":8072,"nodeType":"ParameterList","parameters":[],"src":"1888:0:61"},"scope":8147,"src":"1751:465:61","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8089,"nodeType":"Block","src":"2289:38:61","statements":[{"expression":{"id":8087,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8059,"src":"2306:14:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"functionReturnParameters":8086,"id":8088,"nodeType":"Return","src":"2299:21:61"}]},"functionSelector":"c0039699","id":8090,"implemented":true,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","parameters":{"id":8083,"nodeType":"ParameterList","parameters":[],"src":"2247:2:61"},"returnParameters":{"id":8086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8085,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8090,"src":"2273:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"},"typeName":{"id":8084,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":252,"src":"2273:14:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"2272:16:61"},"scope":8147,"src":"2222:105:61","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2034],"body":{"id":8098,"nodeType":"Block","src":"2399:29:61","statements":[{"expression":{"id":8096,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8061,"src":"2416:5:61","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":8095,"id":8097,"nodeType":"Return","src":"2409:12:61"}]},"functionSelector":"17d7de7c","id":8099,"implemented":true,"kind":"function","modifiers":[],"name":"getName","nodeType":"FunctionDefinition","overrides":{"id":8092,"nodeType":"OverrideSpecifier","overrides":[],"src":"2366:8:61"},"parameters":{"id":8091,"nodeType":"ParameterList","parameters":[],"src":"2349:2:61"},"returnParameters":{"id":8095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8094,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8099,"src":"2384:13:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8093,"name":"string","nodeType":"ElementaryTypeName","src":"2384:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2383:15:61"},"scope":8147,"src":"2333:95:61","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2041],"body":{"id":8117,"nodeType":"Block","src":"2523:71:61","statements":[{"expression":{"arguments":[{"id":8113,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8101,"src":"2569:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8114,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8103,"src":"2580:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8110,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8059,"src":"2540:14:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}],"id":8109,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"2533:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":8111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2533:22:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":8112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":7679,"src":"2533:35:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1964_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1964_$","typeString":"function (contract IERC20,address,uint256)"}},"id":8115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2533:54:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8116,"nodeType":"ExpressionStatement","src":"2533:54:61"}]},"functionSelector":"c1075329","id":8118,"implemented":true,"kind":"function","modifiers":[{"id":8107,"modifierName":{"id":8106,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3399,"src":"2510:12:61","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2510:12:61"}],"name":"withdrawFunds","nodeType":"FunctionDefinition","overrides":{"id":8105,"nodeType":"OverrideSpecifier","overrides":[],"src":"2501:8:61"},"parameters":{"id":8104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8101,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":8118,"src":"2457:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8100,"name":"address","nodeType":"ElementaryTypeName","src":"2457:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8103,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":8118,"src":"2476:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8102,"name":"uint256","nodeType":"ElementaryTypeName","src":"2476:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2456:35:61"},"returnParameters":{"id":8108,"nodeType":"ParameterList","parameters":[],"src":"2523:0:61"},"scope":8147,"src":"2434:160:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2050],"body":{"id":8145,"nodeType":"Block","src":"2731:124:61","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"id":8133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8131,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8120,"src":"2749:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8132,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8059,"src":"2758:14:61","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"src":"2749:23:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f742073776565702042414c","id":8134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2774:18:61","typeDescriptions":{"typeIdentifier":"t_stringliteral_7d6a4348f2dd8c59010fdb28b2f4c34ebf8d548c13bb41c26d8dc2e4aa1cf934","typeString":"literal_string \"Cannot sweep BAL\""},"value":"Cannot sweep BAL"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7d6a4348f2dd8c59010fdb28b2f4c34ebf8d548c13bb41c26d8dc2e4aa1cf934","typeString":"literal_string \"Cannot sweep BAL\""}],"id":8130,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2741:7:61","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2741:52:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8136,"nodeType":"ExpressionStatement","src":"2741:52:61"},{"expression":{"arguments":[{"id":8141,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8122,"src":"2830:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8142,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8124,"src":"2841:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8138,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8120,"src":"2810:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}],"id":8137,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"2803:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":8139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2803:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":8140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":7679,"src":"2803:26:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1964_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1964_$","typeString":"function (contract IERC20,address,uint256)"}},"id":8143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2803:45:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8144,"nodeType":"ExpressionStatement","src":"2803:45:61"}]},"functionSelector":"8b6ca32c","id":8146,"implemented":true,"kind":"function","modifiers":[{"id":8128,"modifierName":{"id":8127,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3399,"src":"2718:12:61","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2718:12:61"}],"name":"sweepTokens","nodeType":"FunctionDefinition","overrides":{"id":8126,"nodeType":"OverrideSpecifier","overrides":[],"src":"2709:8:61"},"parameters":{"id":8125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8120,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":8146,"src":"2630:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":8119,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2630:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":8122,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":8146,"src":"2652:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8121,"name":"address","nodeType":"ElementaryTypeName","src":"2652:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8124,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":8146,"src":"2679:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8123,"name":"uint256","nodeType":"ElementaryTypeName","src":"2679:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2620:79:61"},"returnParameters":{"id":8129,"nodeType":"ParameterList","parameters":[],"src":"2731:0:61"},"scope":8147,"src":"2600:255:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":8148,"src":"1563:1294:61"}],"src":"688:2170:61"},"id":61},"contracts/BALTokenHolderFactory.sol":{"ast":{"absolutePath":"contracts/BALTokenHolderFactory.sol","exportedSymbols":{"BALTokenHolderFactory":[8254]},"id":8255,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8149,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:62"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","id":8150,"nodeType":"ImportDirective","scope":8255,"sourceUnit":253,"src":"713:84:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol","id":8151,"nodeType":"ImportDirective","scope":8255,"sourceUnit":2082,"src":"798:92:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":8152,"nodeType":"ImportDirective","scope":8255,"sourceUnit":3372,"src":"891:65:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","id":8153,"nodeType":"ImportDirective","scope":8255,"sourceUnit":3449,"src":"958:79:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/BALTokenHolder.sol","file":"./BALTokenHolder.sol","id":8154,"nodeType":"ImportDirective","scope":8255,"sourceUnit":8148,"src":"1039:30:62","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8155,"name":"IBALTokenHolderFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":2081,"src":"1105:22:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBALTokenHolderFactory_$2081","typeString":"contract IBALTokenHolderFactory"}},"id":8156,"nodeType":"InheritanceSpecifier","src":"1105:22:62"}],"contractDependencies":[2081,8147],"contractKind":"contract","fullyImplemented":true,"id":8254,"linearizedBaseContracts":[8254,2081],"name":"BALTokenHolderFactory","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":8158,"mutability":"immutable","name":"_balancerToken","nodeType":"VariableDeclaration","scope":8254,"src":"1134:47:62","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"},"typeName":{"id":8157,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":252,"src":"1134:14:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"visibility":"private"},{"constant":false,"id":8160,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":8254,"src":"1187:31:62","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":8159,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"1187:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"private"},{"constant":false,"id":8164,"mutability":"mutable","name":"_factoryCreatedHolders","nodeType":"VariableDeclaration","scope":8254,"src":"1225:55:62","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":8163,"keyType":{"id":8161,"name":"address","nodeType":"ElementaryTypeName","src":"1233:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1225:24:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":8162,"name":"bool","nodeType":"ElementaryTypeName","src":"1244:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"anonymous":false,"id":8170,"name":"BALTokenHolderCreated","nodeType":"EventDefinition","parameters":{"id":8169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8166,"indexed":false,"mutability":"mutable","name":"balTokenHolder","nodeType":"VariableDeclaration","scope":8170,"src":"1315:29:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$8147","typeString":"contract BALTokenHolder"},"typeName":{"id":8165,"name":"BALTokenHolder","nodeType":"UserDefinedTypeName","referencedDeclaration":8147,"src":"1315:14:62","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$8147","typeString":"contract BALTokenHolder"}},"visibility":"internal"},{"constant":false,"id":8168,"indexed":false,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":8170,"src":"1346:11:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8167,"name":"string","nodeType":"ElementaryTypeName","src":"1346:6:62","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1314:44:62"},"src":"1287:72:62"},{"body":{"id":8185,"nodeType":"Block","src":"1421:71:62","statements":[{"expression":{"id":8179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8177,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8158,"src":"1431:14:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8178,"name":"balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8172,"src":"1448:13:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"src":"1431:30:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"id":8180,"nodeType":"ExpressionStatement","src":"1431:30:62"},{"expression":{"id":8183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8181,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8160,"src":"1471:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8182,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"1480:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"src":"1471:14:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":8184,"nodeType":"ExpressionStatement","src":"1471:14:62"}]},"id":8186,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":8175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8172,"mutability":"mutable","name":"balancerToken","nodeType":"VariableDeclaration","scope":8186,"src":"1377:28:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"},"typeName":{"id":8171,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":252,"src":"1377:14:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"visibility":"internal"},{"constant":false,"id":8174,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":8186,"src":"1407:12:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":8173,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"1407:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1376:44:62"},"returnParameters":{"id":8176,"nodeType":"ParameterList","parameters":[],"src":"1421:0:62"},"scope":8254,"src":"1365:127:62","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2061],"body":{"id":8194,"nodeType":"Block","src":"1572:38:62","statements":[{"expression":{"id":8192,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8158,"src":"1589:14:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"functionReturnParameters":8191,"id":8193,"nodeType":"Return","src":"1582:21:62"}]},"functionSelector":"c0039699","id":8195,"implemented":true,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","overrides":{"id":8188,"nodeType":"OverrideSpecifier","overrides":[],"src":"1538:8:62"},"parameters":{"id":8187,"nodeType":"ParameterList","parameters":[],"src":"1523:2:62"},"returnParameters":{"id":8191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8190,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8195,"src":"1556:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"},"typeName":{"id":8189,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":252,"src":"1556:14:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"1555:16:62"},"scope":8254,"src":"1498:112:62","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2066],"body":{"id":8203,"nodeType":"Block","src":"1674:30:62","statements":[{"expression":{"id":8201,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8160,"src":"1691:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"functionReturnParameters":8200,"id":8202,"nodeType":"Return","src":"1684:13:62"}]},"functionSelector":"8d928af8","id":8204,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","overrides":{"id":8197,"nodeType":"OverrideSpecifier","overrides":[],"src":"1648:8:62"},"parameters":{"id":8196,"nodeType":"ParameterList","parameters":[],"src":"1633:2:62"},"returnParameters":{"id":8200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8199,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8204,"src":"1666:6:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":8198,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"1666:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1665:8:62"},"scope":8254,"src":"1616:88:62","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2073],"body":{"id":8216,"nodeType":"Block","src":"1793:54:62","statements":[{"expression":{"baseExpression":{"id":8212,"name":"_factoryCreatedHolders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8164,"src":"1810:22:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8214,"indexExpression":{"id":8213,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8206,"src":"1833:6:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1810:30:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8211,"id":8215,"nodeType":"Return","src":"1803:37:62"}]},"functionSelector":"36390717","id":8217,"implemented":true,"kind":"function","modifiers":[],"name":"isHolderFromFactory","nodeType":"FunctionDefinition","overrides":{"id":8208,"nodeType":"OverrideSpecifier","overrides":[],"src":"1769:8:62"},"parameters":{"id":8207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8206,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":8217,"src":"1739:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8205,"name":"address","nodeType":"ElementaryTypeName","src":"1739:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1738:16:62"},"returnParameters":{"id":8211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8210,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8217,"src":"1787:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8209,"name":"bool","nodeType":"ElementaryTypeName","src":"1787:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1786:6:62"},"scope":8254,"src":"1710:137:62","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2080],"body":{"id":8252,"nodeType":"Block","src":"1933:228:62","statements":[{"assignments":[8226],"declarations":[{"constant":false,"id":8226,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":8252,"src":"1943:21:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$8147","typeString":"contract BALTokenHolder"},"typeName":{"id":8225,"name":"BALTokenHolder","nodeType":"UserDefinedTypeName","referencedDeclaration":8147,"src":"1943:14:62","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$8147","typeString":"contract BALTokenHolder"}},"visibility":"internal"}],"id":8235,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":8229,"name":"getBalancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8195,"src":"1986:16:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IBalancerToken_$252_$","typeString":"function () view returns (contract IBalancerToken)"}},"id":8230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1986:18:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},{"arguments":[],"expression":{"argumentTypes":[],"id":8231,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8204,"src":"2006:8:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3371_$","typeString":"function () view returns (contract IVault)"}},"id":8232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2006:10:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},{"id":8233,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8219,"src":"2018:4:62","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"},{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":8228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1967:18:62","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IBalancerToken_$252_$_t_contract$_IVault_$3371_$_t_string_memory_ptr_$returns$_t_contract$_BALTokenHolder_$8147_$","typeString":"function (contract IBalancerToken,contract IVault,string memory) returns (contract BALTokenHolder)"},"typeName":{"id":8227,"name":"BALTokenHolder","nodeType":"UserDefinedTypeName","referencedDeclaration":8147,"src":"1971:14:62","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$8147","typeString":"contract BALTokenHolder"}}},"id":8234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1967:56:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$8147","typeString":"contract BALTokenHolder"}},"nodeType":"VariableDeclarationStatement","src":"1943:80:62"},{"expression":{"id":8243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8236,"name":"_factoryCreatedHolders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8164,"src":"2034:22:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8241,"indexExpression":{"arguments":[{"id":8239,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8226,"src":"2065:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$8147","typeString":"contract BALTokenHolder"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BALTokenHolder_$8147","typeString":"contract BALTokenHolder"}],"id":8238,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2057:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8237,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:62","typeDescriptions":{}}},"id":8240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2057:15:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2034:39:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":8242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2076:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2034:46:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8244,"nodeType":"ExpressionStatement","src":"2034:46:62"},{"eventCall":{"arguments":[{"id":8246,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8226,"src":"2117:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$8147","typeString":"contract BALTokenHolder"}},{"id":8247,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8219,"src":"2125:4:62","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BALTokenHolder_$8147","typeString":"contract BALTokenHolder"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":8245,"name":"BALTokenHolderCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8170,"src":"2095:21:62","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_BALTokenHolder_$8147_$_t_string_memory_ptr_$returns$__$","typeString":"function (contract BALTokenHolder,string memory)"}},"id":8248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2095:35:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8249,"nodeType":"EmitStatement","src":"2090:40:62"},{"expression":{"id":8250,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8226,"src":"2148:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$8147","typeString":"contract BALTokenHolder"}},"functionReturnParameters":8224,"id":8251,"nodeType":"Return","src":"2141:13:62"}]},"functionSelector":"b6a46b3b","id":8253,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","overrides":{"id":8221,"nodeType":"OverrideSpecifier","overrides":[],"src":"1898:8:62"},"parameters":{"id":8220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8219,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":8253,"src":"1869:18:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8218,"name":"string","nodeType":"ElementaryTypeName","src":"1869:6:62","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1868:20:62"},"returnParameters":{"id":8224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8223,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8253,"src":"1916:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBALTokenHolder_$2051","typeString":"contract IBALTokenHolder"},"typeName":{"id":8222,"name":"IBALTokenHolder","nodeType":"UserDefinedTypeName","referencedDeclaration":2051,"src":"1916:15:62","typeDescriptions":{"typeIdentifier":"t_contract$_IBALTokenHolder_$2051","typeString":"contract IBALTokenHolder"}},"visibility":"internal"}],"src":"1915:17:62"},"scope":8254,"src":"1853:308:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":8255,"src":"1071:1092:62"}],"src":"688:1476:62"},"id":62},"contracts/BalancerQueries.sol":{"ast":{"absolutePath":"contracts/BalancerQueries.sol","exportedSymbols":{"BalancerQueries":[8626]},"id":8627,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8256,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:63"},{"id":8257,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:63"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":8258,"nodeType":"ImportDirective","scope":8627,"sourceUnit":1744,"src":"747:90:63","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","id":8259,"nodeType":"ImportDirective","scope":8627,"sourceUnit":1887,"src":"838:78:63","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":8260,"nodeType":"ImportDirective","scope":8627,"sourceUnit":3372,"src":"917:65:63","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol","id":8261,"nodeType":"ImportDirective","scope":8627,"sourceUnit":2798,"src":"983:68:63","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol","id":8262,"nodeType":"ImportDirective","scope":8627,"sourceUnit":2145,"src":"1053:86:63","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-vault/contracts/AssetHelpers.sol","file":"@balancer-labs/v2-vault/contracts/AssetHelpers.sol","id":8263,"nodeType":"ImportDirective","scope":8627,"sourceUnit":8043,"src":"1141:60:63","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","id":8264,"nodeType":"ImportDirective","scope":8627,"sourceUnit":4019,"src":"1203:77:63","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8266,"name":"IBalancerQueries","nodeType":"UserDefinedTypeName","referencedDeclaration":2144,"src":"1628:16:63","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerQueries_$2144","typeString":"contract IBalancerQueries"}},"id":8267,"nodeType":"InheritanceSpecifier","src":"1628:16:63"},{"baseName":{"id":8268,"name":"AssetHelpers","nodeType":"UserDefinedTypeName","referencedDeclaration":8042,"src":"1646:12:63","typeDescriptions":{"typeIdentifier":"t_contract$_AssetHelpers_$8042","typeString":"contract AssetHelpers"}},"id":8269,"nodeType":"InheritanceSpecifier","src":"1646:12:63"}],"contractDependencies":[2144,8042],"contractKind":"contract","documentation":{"id":8265,"nodeType":"StructuredDocumentation","src":"1282:317:63","text":" @dev This contract simply builds on top of the Balancer V2 architecture to provide useful helpers to users.\n It connects different functionalities of the protocol components to allow accessing information that would\n have required a more cumbersome setup if we wanted to provide these already built-in."},"fullyImplemented":true,"id":8626,"linearizedBaseContracts":[8626,8042,2144],"name":"BalancerQueries","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"fbfa77cf","id":8271,"mutability":"immutable","name":"vault","nodeType":"VariableDeclaration","scope":8626,"src":"1665:29:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":8270,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"1665:6:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"public"},{"body":{"id":8285,"nodeType":"Block","src":"1756:31:63","statements":[{"expression":{"id":8283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8281,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8271,"src":"1766:5:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8282,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8273,"src":"1774:6:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"src":"1766:14:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":8284,"nodeType":"ExpressionStatement","src":"1766:14:63"}]},"id":8286,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8276,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8273,"src":"1741:6:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":8277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"WETH","nodeType":"MemberAccess","referencedDeclaration":3370,"src":"1741:11:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IWETH_$1886_$","typeString":"function () view external returns (contract IWETH)"}},"id":8278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1741:13:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1886","typeString":"contract IWETH"}}],"id":8279,"modifierName":{"id":8275,"name":"AssetHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8042,"src":"1728:12:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AssetHelpers_$8042_$","typeString":"type(contract AssetHelpers)"}},"nodeType":"ModifierInvocation","src":"1728:27:63"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":8274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8273,"mutability":"mutable","name":"_vault","nodeType":"VariableDeclaration","scope":8286,"src":"1713:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":8272,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"1713:6:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1712:15:63"},"returnParameters":{"id":8280,"nodeType":"ParameterList","parameters":[],"src":"1756:0:63"},"scope":8626,"src":"1701:86:63","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2095],"body":{"id":8395,"nodeType":"Block","src":"1949:1837:63","statements":[{"assignments":[8299],"declarations":[{"constant":false,"id":8299,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":8395,"src":"2312:22:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":8297,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"2312:6:63","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"id":8298,"nodeType":"ArrayTypeName","src":"2312:8:63","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"}],"id":8305,"initialValue":{"arguments":[{"hexValue":"32","id":8303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2350:1:63","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":8302,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2337:12:63","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IAsset[] memory)"},"typeName":{"baseType":{"id":8300,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"2341:6:63","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"id":8301,"nodeType":"ArrayTypeName","src":"2341:8:63","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_storage_ptr","typeString":"contract IAsset[]"}}},"id":8304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2337:15:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2312:40:63"},{"expression":{"id":8311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8306,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8299,"src":"2362:6:63","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":8308,"indexExpression":{"hexValue":"30","id":8307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2369:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2362:9:63","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8309,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8288,"src":"2374:10:63","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3222_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":8310,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"assetIn","nodeType":"MemberAccess","referencedDeclaration":3215,"src":"2374:18:63","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"src":"2362:30:63","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"id":8312,"nodeType":"ExpressionStatement","src":"2362:30:63"},{"expression":{"id":8318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8313,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8299,"src":"2402:6:63","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":8315,"indexExpression":{"hexValue":"31","id":8314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2409:1:63","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2402:9:63","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8316,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8288,"src":"2414:10:63","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3222_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":8317,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"assetOut","nodeType":"MemberAccess","referencedDeclaration":3217,"src":"2414:19:63","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"src":"2402:31:63","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"id":8319,"nodeType":"ExpressionStatement","src":"2402:31:63"},{"assignments":[8324],"declarations":[{"constant":false,"id":8324,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":8395,"src":"2444:35:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":8322,"name":"IVault.BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3255,"src":"2444:20:63","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3255_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":8323,"nodeType":"ArrayTypeName","src":"2444:22:63","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"}],"id":8330,"initialValue":{"arguments":[{"hexValue":"31","id":8328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2509:1:63","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":8327,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2482:26:63","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct IVault.BatchSwapStep memory[] memory)"},"typeName":{"baseType":{"id":8325,"name":"IVault.BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3255,"src":"2486:20:63","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3255_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":8326,"nodeType":"ArrayTypeName","src":"2486:22:63","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}}},"id":8329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2482:29:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2444:67:63"},{"expression":{"id":8345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8331,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8324,"src":"2521:5:63","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},"id":8333,"indexExpression":{"hexValue":"30","id":8332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2527:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2521:8:63","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3255_memory_ptr","typeString":"struct IVault.BatchSwapStep memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":8336,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8288,"src":"2575:10:63","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3222_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":8337,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolId","nodeType":"MemberAccess","referencedDeclaration":3211,"src":"2575:17:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"30","id":8338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2620:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"31","id":8339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2650:1:63","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"expression":{"id":8340,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8288,"src":"2673:10:63","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3222_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":8341,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3219,"src":"2673:17:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":8342,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8288,"src":"2714:10:63","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3222_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":8343,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3221,"src":"2714:19:63","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":8334,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"2532:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3371_$","typeString":"type(contract IVault)"}},"id":8335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"BatchSwapStep","nodeType":"MemberAccess","referencedDeclaration":3255,"src":"2532:20:63","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_BatchSwapStep_$3255_storage_ptr_$","typeString":"type(struct IVault.BatchSwapStep storage pointer)"}},"id":8344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["poolId","assetInIndex","assetOutIndex","amount","userData"],"nodeType":"FunctionCall","src":"2532:212:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3255_memory_ptr","typeString":"struct IVault.BatchSwapStep memory"}},"src":"2521:223:63","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3255_memory_ptr","typeString":"struct IVault.BatchSwapStep memory"}},"id":8346,"nodeType":"ExpressionStatement","src":"2521:223:63"},{"assignments":[8351],"declarations":[{"constant":false,"id":8351,"mutability":"mutable","name":"assetDeltas","nodeType":"VariableDeclaration","scope":8395,"src":"2755:27:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":8349,"name":"int256","nodeType":"ElementaryTypeName","src":"2755:6:63","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8350,"nodeType":"ArrayTypeName","src":"2755:8:63","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"id":8360,"initialValue":{"arguments":[{"expression":{"id":8354,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8288,"src":"2806:10:63","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3222_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":8355,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":3213,"src":"2806:15:63","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"}},{"id":8356,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8324,"src":"2823:5:63","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},{"id":8357,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8299,"src":"2830:6:63","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},{"id":8358,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8290,"src":"2838:5:63","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_memory_ptr","typeString":"struct IVault.FundManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"},{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"},{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"},{"typeIdentifier":"t_struct$_FundManagement_$3277_memory_ptr","typeString":"struct IVault.FundManagement memory"}],"expression":{"id":8352,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8271,"src":"2785:5:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":8353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"queryBatchSwap","nodeType":"MemberAccess","referencedDeclaration":3294,"src":"2785:20:63","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_enum$_SwapKind_$3195_$_t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr_$_t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr_$_t_struct$_FundManagement_$3277_memory_ptr_$returns$_t_array$_t_int256_$dyn_memory_ptr_$","typeString":"function (enum IVault.SwapKind,struct IVault.BatchSwapStep memory[] memory,contract IAsset[] memory,struct IVault.FundManagement memory) external returns (int256[] memory)"}},"id":8359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2785:59:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2755:89:63"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"},"id":8366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8361,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8288,"src":"3172:10:63","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3222_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":8362,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":3213,"src":"3172:15:63","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":8363,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"3191:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3371_$","typeString":"type(contract IVault)"}},"id":8364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SwapKind","nodeType":"MemberAccess","referencedDeclaration":3195,"src":"3191:15:63","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$3195_$","typeString":"type(enum IVault.SwapKind)"}},"id":8365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"GIVEN_IN","nodeType":"MemberAccess","src":"3191:24:63","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"}},"src":"3172:43:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8393,"nodeType":"Block","src":"3549:231:63","statements":[{"expression":{"arguments":[{"baseExpression":{"id":8388,"name":"assetDeltas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8351,"src":"3754:11:63","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"id":8390,"indexExpression":{"hexValue":"30","id":8389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3766:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3754:14:63","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8387,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3746:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8386,"name":"uint256","nodeType":"ElementaryTypeName","src":"3746:7:63","typeDescriptions":{}}},"id":8391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3746:23:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8295,"id":8392,"nodeType":"Return","src":"3739:30:63"}]},"id":8394,"nodeType":"IfStatement","src":"3168:612:63","trueBody":{"id":8385,"nodeType":"Block","src":"3217:326:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":8368,"name":"assetDeltas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8351,"src":"3441:11:63","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"id":8370,"indexExpression":{"hexValue":"31","id":8369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3453:1:63","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3441:14:63","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":8371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3459:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3441:19:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":8373,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"3462:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":8374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SHOULD_NOT_HAPPEN","nodeType":"MemberAccess","referencedDeclaration":1742,"src":"3462:24:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8367,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"3432:8:63","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":8375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3432:55:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8376,"nodeType":"ExpressionStatement","src":"3432:55:63"},{"expression":{"arguments":[{"id":8382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"3516:15:63","subExpression":{"baseExpression":{"id":8379,"name":"assetDeltas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8351,"src":"3517:11:63","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"id":8381,"indexExpression":{"hexValue":"31","id":8380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3529:1:63","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3517:14:63","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8378,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3508:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8377,"name":"uint256","nodeType":"ElementaryTypeName","src":"3508:7:63","typeDescriptions":{}}},"id":8383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3508:24:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8295,"id":8384,"nodeType":"Return","src":"3501:31:63"}]}}]},"functionSelector":"e969f6b3","id":8396,"implemented":true,"kind":"function","modifiers":[],"name":"querySwap","nodeType":"FunctionDefinition","overrides":{"id":8292,"nodeType":"OverrideSpecifier","overrides":[],"src":"1910:8:63"},"parameters":{"id":8291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8288,"mutability":"mutable","name":"singleSwap","nodeType":"VariableDeclaration","scope":8396,"src":"1812:35:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3222_memory_ptr","typeString":"struct IVault.SingleSwap"},"typeName":{"id":8287,"name":"IVault.SingleSwap","nodeType":"UserDefinedTypeName","referencedDeclaration":3222,"src":"1812:17:63","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3222_storage_ptr","typeString":"struct IVault.SingleSwap"}},"visibility":"internal"},{"constant":false,"id":8290,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":8396,"src":"1849:34:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":8289,"name":"IVault.FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3277,"src":"1849:21:63","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"}],"src":"1811:73:63"},"returnParameters":{"id":8295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8294,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8396,"src":"1936:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8293,"name":"uint256","nodeType":"ElementaryTypeName","src":"1936:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1935:9:63"},"scope":8626,"src":"1793:1993:63","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2111],"body":{"id":8421,"nodeType":"Block","src":"4029:72:63","statements":[{"expression":{"arguments":[{"id":8415,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8398,"src":"4067:4:63","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"}},{"id":8416,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8401,"src":"4073:5:63","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},{"id":8417,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8404,"src":"4080:6:63","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},{"id":8418,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8406,"src":"4088:5:63","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_memory_ptr","typeString":"struct IVault.FundManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"},{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"},{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"},{"typeIdentifier":"t_struct$_FundManagement_$3277_memory_ptr","typeString":"struct IVault.FundManagement memory"}],"expression":{"id":8413,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8271,"src":"4046:5:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":8414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"queryBatchSwap","nodeType":"MemberAccess","referencedDeclaration":3294,"src":"4046:20:63","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_enum$_SwapKind_$3195_$_t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr_$_t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr_$_t_struct$_FundManagement_$3277_memory_ptr_$returns$_t_array$_t_int256_$dyn_memory_ptr_$","typeString":"function (enum IVault.SwapKind,struct IVault.BatchSwapStep memory[] memory,contract IAsset[] memory,struct IVault.FundManagement memory) external returns (int256[] memory)"}},"id":8419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4046:48:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"functionReturnParameters":8412,"id":8420,"nodeType":"Return","src":"4039:55:63"}]},"functionSelector":"f84d066e","id":8422,"implemented":true,"kind":"function","modifiers":[],"name":"queryBatchSwap","nodeType":"FunctionDefinition","overrides":{"id":8408,"nodeType":"OverrideSpecifier","overrides":[],"src":"3982:8:63"},"parameters":{"id":8407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8398,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":8422,"src":"3825:20:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"},"typeName":{"id":8397,"name":"IVault.SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3195,"src":"3825:15:63","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":8401,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":8422,"src":"3855:35:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":8399,"name":"IVault.BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3255,"src":"3855:20:63","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3255_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":8400,"nodeType":"ArrayTypeName","src":"3855:22:63","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"},{"constant":false,"id":8404,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":8422,"src":"3900:22:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":8402,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"3900:6:63","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"id":8403,"nodeType":"ArrayTypeName","src":"3900:8:63","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":8406,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":8422,"src":"3932:34:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":8405,"name":"IVault.FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3277,"src":"3932:21:63","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"}],"src":"3815:157:63"},"returnParameters":{"id":8412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8411,"mutability":"mutable","name":"assetDeltas","nodeType":"VariableDeclaration","scope":8422,"src":"4000:27:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":8409,"name":"int256","nodeType":"ElementaryTypeName","src":"4000:6:63","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8410,"nodeType":"ArrayTypeName","src":"4000:8:63","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"src":"3999:29:63"},"scope":8626,"src":"3792:309:63","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2127],"body":{"id":8485,"nodeType":"Block","src":"4325:518:63","statements":[{"assignments":[8440,null],"declarations":[{"constant":false,"id":8440,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":8485,"src":"4336:12:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8439,"name":"address","nodeType":"ElementaryTypeName","src":"4336:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":8445,"initialValue":{"arguments":[{"id":8443,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8424,"src":"4368:6:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8441,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8271,"src":"4354:5:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":8442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":3057,"src":"4354:13:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$_t_enum$_PoolSpecialization_$3030_$","typeString":"function (bytes32) view external returns (address,enum IVault.PoolSpecialization)"}},"id":8444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4354:21:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_PoolSpecialization_$3030_$","typeString":"tuple(address,enum IVault.PoolSpecialization)"}},"nodeType":"VariableDeclarationStatement","src":"4335:40:63"},{"assignments":[8450,8452],"declarations":[{"constant":false,"id":8450,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":8485,"src":"4386:25:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8448,"name":"uint256","nodeType":"ElementaryTypeName","src":"4386:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8449,"nodeType":"ArrayTypeName","src":"4386:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":8452,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":8485,"src":"4413:23:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8451,"name":"uint256","nodeType":"ElementaryTypeName","src":"4413:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8458,"initialValue":{"arguments":[{"id":8454,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8424,"src":"4470:6:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":8455,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8430,"src":"4478:7:63","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3150_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}},"id":8456,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":3142,"src":"4478:14:63","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}],"id":8453,"name":"_validateAssetsAndGetBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8625,"src":"4440:29:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,contract IAsset[] memory) view returns (uint256[] memory,uint256)"}},"id":8457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4440:53:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4385:108:63"},{"assignments":[8460],"declarations":[{"constant":false,"id":8460,"mutability":"mutable","name":"feesCollector","nodeType":"VariableDeclaration","scope":8485,"src":"4503:36:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":8459,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":2906,"src":"4503:22:63","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"id":8464,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8461,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8271,"src":"4542:5:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":8462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":3358,"src":"4542:30:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$2906_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":8463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4542:32:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"nodeType":"VariableDeclarationStatement","src":"4503:71:63"},{"expression":{"id":8483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":8465,"name":"bptOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8434,"src":"4586:6:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8466,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8437,"src":"4594:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":8467,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4585:19:63","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8472,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8424,"src":"4646:6:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8473,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8426,"src":"4666:6:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8474,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8428,"src":"4686:9:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8475,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8450,"src":"4709:8:63","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":8476,"name":"lastChangeBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8452,"src":"4731:15:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8477,"name":"feesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8460,"src":"4760:13:63","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"id":8478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":2881,"src":"4760:34:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":8479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4760:36:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":8480,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8430,"src":"4810:7:63","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3150_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}},"id":8481,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3147,"src":"4810:16:63","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":8469,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8440,"src":"4617:4:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8468,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"4607:9:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePool_$2797_$","typeString":"type(contract IBasePool)"}},"id":8470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4607:15:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$2797","typeString":"contract IBasePool"}},"id":8471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"queryJoin","nodeType":"MemberAccess","referencedDeclaration":2773,"src":"4607:25:63","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (bytes32,address,address,uint256[] memory,uint256,uint256,bytes memory) external returns (uint256,uint256[] memory)"}},"id":8482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4607:229:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"src":"4585:251:63","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8484,"nodeType":"ExpressionStatement","src":"4585:251:63"}]},"functionSelector":"9ebbf05d","id":8486,"implemented":true,"kind":"function","modifiers":[],"name":"queryJoin","nodeType":"FunctionDefinition","overrides":{"id":8432,"nodeType":"OverrideSpecifier","overrides":[],"src":"4263:8:63"},"parameters":{"id":8431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8424,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":8486,"src":"4135:14:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8423,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4135:7:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8426,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":8486,"src":"4159:14:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8425,"name":"address","nodeType":"ElementaryTypeName","src":"4159:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8428,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":8486,"src":"4183:17:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8427,"name":"address","nodeType":"ElementaryTypeName","src":"4183:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8430,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":8486,"src":"4210:37:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3150_memory_ptr","typeString":"struct IVault.JoinPoolRequest"},"typeName":{"id":8429,"name":"IVault.JoinPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3150,"src":"4210:22:63","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3150_storage_ptr","typeString":"struct IVault.JoinPoolRequest"}},"visibility":"internal"}],"src":"4125:128:63"},"returnParameters":{"id":8438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8434,"mutability":"mutable","name":"bptOut","nodeType":"VariableDeclaration","scope":8486,"src":"4281:14:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8433,"name":"uint256","nodeType":"ElementaryTypeName","src":"4281:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8437,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":8486,"src":"4297:26:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8435,"name":"uint256","nodeType":"ElementaryTypeName","src":"4297:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8436,"nodeType":"ArrayTypeName","src":"4297:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4280:44:63"},"scope":8626,"src":"4107:736:63","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2143],"body":{"id":8549,"nodeType":"Block","src":"5067:518:63","statements":[{"assignments":[8504,null],"declarations":[{"constant":false,"id":8504,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":8549,"src":"5078:12:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8503,"name":"address","nodeType":"ElementaryTypeName","src":"5078:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":8509,"initialValue":{"arguments":[{"id":8507,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8488,"src":"5110:6:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8505,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8271,"src":"5096:5:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":8506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":3057,"src":"5096:13:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$_t_enum$_PoolSpecialization_$3030_$","typeString":"function (bytes32) view external returns (address,enum IVault.PoolSpecialization)"}},"id":8508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5096:21:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_PoolSpecialization_$3030_$","typeString":"tuple(address,enum IVault.PoolSpecialization)"}},"nodeType":"VariableDeclarationStatement","src":"5077:40:63"},{"assignments":[8514,8516],"declarations":[{"constant":false,"id":8514,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":8549,"src":"5128:25:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8512,"name":"uint256","nodeType":"ElementaryTypeName","src":"5128:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8513,"nodeType":"ArrayTypeName","src":"5128:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":8516,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":8549,"src":"5155:23:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8515,"name":"uint256","nodeType":"ElementaryTypeName","src":"5155:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8522,"initialValue":{"arguments":[{"id":8518,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8488,"src":"5212:6:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":8519,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8494,"src":"5220:7:63","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":8520,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":3165,"src":"5220:14:63","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}],"id":8517,"name":"_validateAssetsAndGetBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8625,"src":"5182:29:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,contract IAsset[] memory) view returns (uint256[] memory,uint256)"}},"id":8521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5182:53:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5127:108:63"},{"assignments":[8524],"declarations":[{"constant":false,"id":8524,"mutability":"mutable","name":"feesCollector","nodeType":"VariableDeclaration","scope":8549,"src":"5245:36:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":8523,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":2906,"src":"5245:22:63","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"id":8528,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8525,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8271,"src":"5284:5:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":8526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":3358,"src":"5284:30:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$2906_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":8527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5284:32:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"nodeType":"VariableDeclarationStatement","src":"5245:71:63"},{"expression":{"id":8547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":8529,"name":"bptIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8498,"src":"5328:5:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8530,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8501,"src":"5335:10:63","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":8531,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5327:19:63","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8536,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8488,"src":"5388:6:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8537,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8490,"src":"5408:6:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8538,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8492,"src":"5428:9:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8539,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8514,"src":"5451:8:63","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":8540,"name":"lastChangeBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8516,"src":"5473:15:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8541,"name":"feesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8524,"src":"5502:13:63","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"id":8542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":2881,"src":"5502:34:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":8543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5502:36:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":8544,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8494,"src":"5552:7:63","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":8545,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3170,"src":"5552:16:63","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":8533,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8504,"src":"5359:4:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8532,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"5349:9:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePool_$2797_$","typeString":"type(contract IBasePool)"}},"id":8534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5349:15:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$2797","typeString":"contract IBasePool"}},"id":8535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"queryExit","nodeType":"MemberAccess","referencedDeclaration":2796,"src":"5349:25:63","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (bytes32,address,address,uint256[] memory,uint256,uint256,bytes memory) external returns (uint256,uint256[] memory)"}},"id":8546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5349:229:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"src":"5327:251:63","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8548,"nodeType":"ExpressionStatement","src":"5327:251:63"}]},"functionSelector":"c7b2c52c","id":8550,"implemented":true,"kind":"function","modifiers":[],"name":"queryExit","nodeType":"FunctionDefinition","overrides":{"id":8496,"nodeType":"OverrideSpecifier","overrides":[],"src":"5005:8:63"},"parameters":{"id":8495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8488,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":8550,"src":"4877:14:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8487,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4877:7:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8490,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":8550,"src":"4901:14:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8489,"name":"address","nodeType":"ElementaryTypeName","src":"4901:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8492,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":8550,"src":"4925:17:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8491,"name":"address","nodeType":"ElementaryTypeName","src":"4925:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8494,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":8550,"src":"4952:37:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":8493,"name":"IVault.ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3173,"src":"4952:22:63","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"}],"src":"4867:128:63"},"returnParameters":{"id":8502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8498,"mutability":"mutable","name":"bptIn","nodeType":"VariableDeclaration","scope":8550,"src":"5023:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8497,"name":"uint256","nodeType":"ElementaryTypeName","src":"5023:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8501,"mutability":"mutable","name":"amountsOut","nodeType":"VariableDeclaration","scope":8550,"src":"5038:27:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8499,"name":"uint256","nodeType":"ElementaryTypeName","src":"5038:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8500,"nodeType":"ArrayTypeName","src":"5038:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5022:44:63"},"scope":8626,"src":"4849:736:63","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8624,"nodeType":"Block","src":"5781:482:63","statements":[{"assignments":[8566],"declarations":[{"constant":false,"id":8566,"mutability":"mutable","name":"actualTokens","nodeType":"VariableDeclaration","scope":8624,"src":"5791:28:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":8564,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"5791:6:63","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":8565,"nodeType":"ArrayTypeName","src":"5791:8:63","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":8567,"nodeType":"VariableDeclarationStatement","src":"5791:28:63"},{"assignments":[8571],"declarations":[{"constant":false,"id":8571,"mutability":"mutable","name":"expectedTokens","nodeType":"VariableDeclaration","scope":8624,"src":"5829:30:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":8569,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"5829:6:63","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":8570,"nodeType":"ArrayTypeName","src":"5829:8:63","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":8575,"initialValue":{"arguments":[{"id":8573,"name":"expectedAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8555,"src":"5881:14:63","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}],"id":8572,"name":"_translateToIERC20","nodeType":"Identifier","overloadedDeclarations":[7978,8025],"referencedDeclaration":8025,"src":"5862:18:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr_$returns$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$","typeString":"function (contract IAsset[] memory) view returns (contract IERC20[] memory)"}},"id":8574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5862:34:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5829:67:63"},{"expression":{"id":8584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":8576,"name":"actualTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8566,"src":"5908:12:63","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":8577,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8559,"src":"5922:8:63","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":8578,"name":"lastChangeBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8561,"src":"5932:15:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8579,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5907:41:63","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(contract IERC20[] memory,uint256[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8582,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8552,"src":"5971:6:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8580,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8271,"src":"5951:5:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":8581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPoolTokens","nodeType":"MemberAccess","referencedDeclaration":3127,"src":"5951:19:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32) view external returns (contract IERC20[] memory,uint256[] memory,uint256)"}},"id":8583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5951:27:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(contract IERC20[] memory,uint256[] memory,uint256)"}},"src":"5907:71:63","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8585,"nodeType":"ExpressionStatement","src":"5907:71:63"},{"expression":{"arguments":[{"expression":{"id":8589,"name":"actualTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8566,"src":"6024:12:63","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":8590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6024:19:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":8591,"name":"expectedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8571,"src":"6045:14:63","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":8592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6045:21:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8586,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4018,"src":"5988:12:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$4018_$","typeString":"type(library InputHelpers)"}},"id":8588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ensureInputLengthMatch","nodeType":"MemberAccess","referencedDeclaration":3926,"src":"5988:35:63","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":8593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5988:79:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8594,"nodeType":"ExpressionStatement","src":"5988:79:63"},{"body":{"id":8622,"nodeType":"Block","src":"6128:129:63","statements":[{"assignments":[8607],"declarations":[{"constant":false,"id":8607,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":8622,"src":"6142:12:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":8606,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"6142:6:63","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"id":8611,"initialValue":{"baseExpression":{"id":8608,"name":"actualTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8566,"src":"6157:12:63","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":8610,"indexExpression":{"id":8609,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8596,"src":"6170:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6157:15:63","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"6142:30:63"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"id":8617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8613,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8607,"src":"6195:5:63","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"baseExpression":{"id":8614,"name":"expectedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8571,"src":"6204:14:63","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":8616,"indexExpression":{"id":8615,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8596,"src":"6219:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6204:17:63","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"6195:26:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":8618,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"6223:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":8619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"TOKENS_MISMATCH","nodeType":"MemberAccess","referencedDeclaration":1700,"src":"6223:22:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8612,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"6186:8:63","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":8620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6186:60:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8621,"nodeType":"ExpressionStatement","src":"6186:60:63"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8599,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8596,"src":"6098:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8600,"name":"actualTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8566,"src":"6102:12:63","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":8601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6102:19:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6098:23:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8623,"initializationExpression":{"assignments":[8596],"declarations":[{"constant":false,"id":8596,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":8623,"src":"6083:9:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8595,"name":"uint256","nodeType":"ElementaryTypeName","src":"6083:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8598,"initialValue":{"hexValue":"30","id":8597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6095:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6083:13:63"},"loopExpression":{"expression":{"id":8604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6123:3:63","subExpression":{"id":8603,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8596,"src":"6125:1:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8605,"nodeType":"ExpressionStatement","src":"6123:3:63"},"nodeType":"ForStatement","src":"6078:179:63"}]},"id":8625,"implemented":true,"kind":"function","modifiers":[],"name":"_validateAssetsAndGetBalances","nodeType":"FunctionDefinition","parameters":{"id":8556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8552,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":8625,"src":"5630:14:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8551,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5630:7:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8555,"mutability":"mutable","name":"expectedAssets","nodeType":"VariableDeclaration","scope":8625,"src":"5646:30:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":8553,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"5646:6:63","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"id":8554,"nodeType":"ArrayTypeName","src":"5646:8:63","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"}],"src":"5629:48:63"},"returnParameters":{"id":8562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8559,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":8625,"src":"5725:25:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":8557,"name":"uint256","nodeType":"ElementaryTypeName","src":"5725:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8558,"nodeType":"ArrayTypeName","src":"5725:9:63","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":8561,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":8625,"src":"5752:23:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8560,"name":"uint256","nodeType":"ElementaryTypeName","src":"5752:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5724:52:63"},"scope":8626,"src":"5591:672:63","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":8627,"src":"1600:4665:63"}],"src":"688:5578:63"},"id":63},"contracts/BatchRelayerLibrary.sol":{"ast":{"absolutePath":"contracts/BatchRelayerLibrary.sol","exportedSymbols":{"BatchRelayerLibrary":[8677]},"id":8678,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8628,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:64"},{"id":8629,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:64"},{"absolutePath":"contracts/relayer/BaseRelayerLibrary.sol","file":"./relayer/BaseRelayerLibrary.sol","id":8630,"nodeType":"ImportDirective","scope":8678,"sourceUnit":10067,"src":"747:42:64","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/AaveWrapping.sol","file":"./relayer/AaveWrapping.sol","id":8631,"nodeType":"ImportDirective","scope":8678,"sourceUnit":9494,"src":"791:36:64","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/ERC4626Wrapping.sol","file":"./relayer/ERC4626Wrapping.sol","id":8632,"nodeType":"ImportDirective","scope":8678,"sourceUnit":10233,"src":"828:39:64","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/GaugeActions.sol","file":"./relayer/GaugeActions.sol","id":8633,"nodeType":"ImportDirective","scope":8678,"sourceUnit":10493,"src":"868:36:64","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/LidoWrapping.sol","file":"./relayer/LidoWrapping.sol","id":8634,"nodeType":"ImportDirective","scope":8678,"sourceUnit":10914,"src":"905:36:64","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/UnbuttonWrapping.sol","file":"./relayer/UnbuttonWrapping.sol","id":8635,"nodeType":"ImportDirective","scope":8678,"sourceUnit":11277,"src":"942:40:64","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/ReaperWrapping.sol","file":"./relayer/ReaperWrapping.sol","id":8636,"nodeType":"ImportDirective","scope":8678,"sourceUnit":11113,"src":"983:38:64","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/VaultActions.sol","file":"./relayer/VaultActions.sol","id":8637,"nodeType":"ImportDirective","scope":8678,"sourceUnit":12167,"src":"1022:36:64","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/VaultPermit.sol","file":"./relayer/VaultPermit.sol","id":8638,"nodeType":"ImportDirective","scope":8678,"sourceUnit":12249,"src":"1059:35:64","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8640,"name":"AaveWrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":9493,"src":"1346:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_AaveWrapping_$9493","typeString":"contract AaveWrapping"}},"id":8641,"nodeType":"InheritanceSpecifier","src":"1346:12:64"},{"baseName":{"id":8642,"name":"BaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":10066,"src":"1364:18:64","typeDescriptions":{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$10066","typeString":"contract BaseRelayerLibrary"}},"id":8643,"nodeType":"InheritanceSpecifier","src":"1364:18:64"},{"baseName":{"id":8644,"name":"ERC4626Wrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":10232,"src":"1388:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626Wrapping_$10232","typeString":"contract ERC4626Wrapping"}},"id":8645,"nodeType":"InheritanceSpecifier","src":"1388:15:64"},{"baseName":{"id":8646,"name":"GaugeActions","nodeType":"UserDefinedTypeName","referencedDeclaration":10492,"src":"1409:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_GaugeActions_$10492","typeString":"contract GaugeActions"}},"id":8647,"nodeType":"InheritanceSpecifier","src":"1409:12:64"},{"baseName":{"id":8648,"name":"LidoWrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":10913,"src":"1427:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_LidoWrapping_$10913","typeString":"contract LidoWrapping"}},"id":8649,"nodeType":"InheritanceSpecifier","src":"1427:12:64"},{"baseName":{"id":8650,"name":"UnbuttonWrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":11276,"src":"1445:16:64","typeDescriptions":{"typeIdentifier":"t_contract$_UnbuttonWrapping_$11276","typeString":"contract UnbuttonWrapping"}},"id":8651,"nodeType":"InheritanceSpecifier","src":"1445:16:64"},{"baseName":{"id":8652,"name":"ReaperWrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":11112,"src":"1467:14:64","typeDescriptions":{"typeIdentifier":"t_contract$_ReaperWrapping_$11112","typeString":"contract ReaperWrapping"}},"id":8653,"nodeType":"InheritanceSpecifier","src":"1467:14:64"},{"baseName":{"id":8654,"name":"VaultActions","nodeType":"UserDefinedTypeName","referencedDeclaration":12166,"src":"1487:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_VaultActions_$12166","typeString":"contract VaultActions"}},"id":8655,"nodeType":"InheritanceSpecifier","src":"1487:12:64"},{"baseName":{"id":8656,"name":"VaultPermit","nodeType":"UserDefinedTypeName","referencedDeclaration":12248,"src":"1505:11:64","typeDescriptions":{"typeIdentifier":"t_contract$_VaultPermit_$12248","typeString":"contract VaultPermit"}},"id":8657,"nodeType":"InheritanceSpecifier","src":"1505:11:64"}],"contractDependencies":[8042,9493,10066,10232,10492,10570,10913,11112,11276,12166,12248],"contractKind":"contract","documentation":{"id":8639,"nodeType":"StructuredDocumentation","src":"1096:213:64","text":" @title Batch Relayer Library\n @notice This contract is not a relayer by itself and calls into it directly will fail.\n The associated relayer can be found by calling `getEntrypoint` on this contract."},"fullyImplemented":true,"id":8677,"linearizedBaseContracts":[8677,12248,12166,11112,11276,10913,10492,10232,10066,9493,10570,8042],"name":"BatchRelayerLibrary","nodeType":"ContractDefinition","nodes":[{"body":{"id":8675,"nodeType":"Block","src":"1686:64:64","statements":[]},"id":8676,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":8666,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8659,"src":"1637:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}}],"id":8667,"modifierName":{"id":8665,"name":"BaseRelayerLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10066,"src":"1618:18:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseRelayerLibrary_$10066_$","typeString":"type(contract BaseRelayerLibrary)"}},"nodeType":"ModifierInvocation","src":"1618:25:64"},{"arguments":[{"id":8669,"name":"wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8661,"src":"1657:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"id":8670,"modifierName":{"id":8668,"name":"LidoWrapping","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10913,"src":"1644:12:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LidoWrapping_$10913_$","typeString":"type(contract LidoWrapping)"}},"nodeType":"ModifierInvocation","src":"1644:20:64"},{"arguments":[{"id":8672,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8663,"src":"1678:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}}],"id":8673,"modifierName":{"id":8671,"name":"GaugeActions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10492,"src":"1665:12:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_GaugeActions_$10492_$","typeString":"type(contract GaugeActions)"}},"nodeType":"ModifierInvocation","src":"1665:20:64"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":8664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8659,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":8676,"src":"1544:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":8658,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"1544:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":8661,"mutability":"mutable","name":"wstETH","nodeType":"VariableDeclaration","scope":8676,"src":"1566:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":8660,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1566:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":8663,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":8676,"src":"1589:22:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"},"typeName":{"id":8662,"name":"IBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":175,"src":"1589:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}},"visibility":"internal"}],"src":"1534:83:64"},"returnParameters":{"id":8674,"nodeType":"ParameterList","parameters":[],"src":"1686:0:64"},"scope":8677,"src":"1523:227:64","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":8678,"src":"1310:442:64"}],"src":"688:1065:64"},"id":64},"contracts/ProtocolFeePercentagesProvider.sol":{"ast":{"absolutePath":"contracts/ProtocolFeePercentagesProvider.sol","exportedSymbols":{"ProtocolFeePercentagesProvider":[9073]},"id":9074,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8679,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:65"},{"id":8680,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:65"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","id":8681,"nodeType":"ImportDirective","scope":9074,"sourceUnit":2907,"src":"747:81:65","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol","id":8682,"nodeType":"ImportDirective","scope":9074,"sourceUnit":2264,"src":"829:101:65","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":8683,"nodeType":"ImportDirective","scope":9074,"sourceUnit":4114,"src":"932:88:65","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol","id":8684,"nodeType":"ImportDirective","scope":9074,"sourceUnit":7650,"src":"1021:78:65","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8685,"name":"IProtocolFeePercentagesProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":2250,"src":"1144:31:65","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2250","typeString":"contract IProtocolFeePercentagesProvider"}},"id":8686,"nodeType":"InheritanceSpecifier","src":"1144:31:65"},{"baseName":{"id":8687,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":4113,"src":"1177:23:65","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$4113","typeString":"contract SingletonAuthentication"}},"id":8688,"nodeType":"InheritanceSpecifier","src":"1177:23:65"}],"contractDependencies":[1754,2250,3448,4113],"contractKind":"contract","fullyImplemented":true,"id":9073,"linearizedBaseContracts":[9073,4113,3448,1754,2250],"name":"ProtocolFeePercentagesProvider","nodeType":"ContractDefinition","nodes":[{"id":8691,"libraryName":{"id":8689,"name":"SafeCast","nodeType":"UserDefinedTypeName","referencedDeclaration":7649,"src":"1213:8:65","typeDescriptions":{"typeIdentifier":"t_contract$_SafeCast_$7649","typeString":"library SafeCast"}},"nodeType":"UsingForDirective","src":"1207:27:65","typeName":{"id":8690,"name":"uint256","nodeType":"ElementaryTypeName","src":"1226:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":8693,"mutability":"immutable","name":"_protocolFeesCollector","nodeType":"VariableDeclaration","scope":9073,"src":"1240:63:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":8692,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":2906,"src":"1240:22:65","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"visibility":"private"},{"canonicalName":"ProtocolFeePercentagesProvider.FeeTypeData","id":8702,"members":[{"constant":false,"id":8695,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8702,"src":"1339:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":8694,"name":"uint64","nodeType":"ElementaryTypeName","src":"1339:6:65","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":8697,"mutability":"mutable","name":"maximum","nodeType":"VariableDeclaration","scope":8702,"src":"1361:14:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":8696,"name":"uint64","nodeType":"ElementaryTypeName","src":"1361:6:65","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":8699,"mutability":"mutable","name":"registered","nodeType":"VariableDeclaration","scope":8702,"src":"1385:15:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8698,"name":"bool","nodeType":"ElementaryTypeName","src":"1385:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8701,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":8702,"src":"1410:11:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":8700,"name":"string","nodeType":"ElementaryTypeName","src":"1410:6:65","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"FeeTypeData","nodeType":"StructDefinition","scope":9073,"src":"1310:118:65","visibility":"public"},{"constant":false,"id":8706,"mutability":"mutable","name":"_feeTypeData","nodeType":"VariableDeclaration","scope":9073,"src":"1434:52:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$8702_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData)"},"typeName":{"id":8705,"keyType":{"id":8703,"name":"uint256","nodeType":"ElementaryTypeName","src":"1442:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1434:31:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$8702_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData)"},"valueType":{"id":8704,"name":"FeeTypeData","nodeType":"UserDefinedTypeName","referencedDeclaration":8702,"src":"1453:11:65","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$8702_storage_ptr","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData"}}},"visibility":"private"},{"constant":true,"id":8709,"mutability":"constant","name":"_MAX_PROTOCOL_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":9073,"src":"1591:60:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8707,"name":"uint256","nodeType":"ElementaryTypeName","src":"1591:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":8708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1647:4:65","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"private"},{"constant":true,"id":8712,"mutability":"constant","name":"_MAX_PROTOCOL_SWAP_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":9073,"src":"1717:66:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8710,"name":"uint256","nodeType":"ElementaryTypeName","src":"1717:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3530653136","id":8711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1778:5:65","typeDescriptions":{"typeIdentifier":"t_rational_500000000000000000_by_1","typeString":"int_const 500000000000000000"},"value":"50e16"},"visibility":"private"},{"constant":true,"id":8715,"mutability":"constant","name":"_MAX_PROTOCOL_FLASH_LOAN_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":9073,"src":"1796:71:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8713,"name":"uint256","nodeType":"ElementaryTypeName","src":"1796:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653136","id":8714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1863:4:65","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"value":"1e16"},"visibility":"private"},{"body":{"id":8785,"nodeType":"Block","src":"2011:1101:65","statements":[{"assignments":[8728],"declarations":[{"constant":false,"id":8728,"mutability":"mutable","name":"protocolFeeCollector","nodeType":"VariableDeclaration","scope":8785,"src":"2021:43:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":8727,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":2906,"src":"2021:22:65","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"id":8732,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8729,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8717,"src":"2067:5:65","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":8730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":3358,"src":"2067:30:65","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$2906_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":8731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2067:32:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"nodeType":"VariableDeclarationStatement","src":"2021:78:65"},{"expression":{"id":8735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8733,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8693,"src":"2109:22:65","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8734,"name":"protocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8728,"src":"2134:20:65","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"src":"2109:45:65","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"id":8736,"nodeType":"ExpressionStatement","src":"2109:45:65"},{"expression":{"arguments":[{"expression":{"id":8738,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2263,"src":"2346:15:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2263_$","typeString":"type(library ProtocolFeeType)"}},"id":8739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"YIELD","nodeType":"MemberAccess","referencedDeclaration":2259,"src":"2346:21:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"5969656c64","id":8740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2369:7:65","typeDescriptions":{"typeIdentifier":"t_stringliteral_0dc8618f4925c4319195a39ada16304f511bf885ff9f3d63bc6b0f3979e46fb6","typeString":"literal_string \"Yield\""},"value":"Yield"},{"id":8741,"name":"maxYieldValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8719,"src":"2378:13:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":8742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2393:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_0dc8618f4925c4319195a39ada16304f511bf885ff9f3d63bc6b0f3979e46fb6","typeString":"literal_string \"Yield\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8737,"name":"_registerFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8888,"src":"2329:16:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,string memory,uint256,uint256)"}},"id":8743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2329:66:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8744,"nodeType":"ExpressionStatement","src":"2329:66:65"},{"expression":{"arguments":[{"expression":{"id":8746,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2263,"src":"2422:15:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2263_$","typeString":"type(library ProtocolFeeType)"}},"id":8747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"AUM","nodeType":"MemberAccess","referencedDeclaration":2262,"src":"2422:19:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"41737365747320556e646572204d616e6167656d656e74","id":8748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2443:25:65","typeDescriptions":{"typeIdentifier":"t_stringliteral_1b3163719d909d21fddec0d3895753e79709f056f59200d2a0b8b000bff2174e","typeString":"literal_string \"Assets Under Management\""},"value":"Assets Under Management"},{"id":8749,"name":"maxAUMValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8721,"src":"2470:11:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":8750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2483:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_1b3163719d909d21fddec0d3895753e79709f056f59200d2a0b8b000bff2174e","typeString":"literal_string \"Assets Under Management\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8745,"name":"_registerFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8888,"src":"2405:16:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,string memory,uint256,uint256)"}},"id":8751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2405:80:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8752,"nodeType":"ExpressionStatement","src":"2405:80:65"},{"expression":{"id":8759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":8753,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8706,"src":"2856:12:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$8702_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":8756,"indexExpression":{"expression":{"id":8754,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2263,"src":"2869:15:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2263_$","typeString":"type(library ProtocolFeeType)"}},"id":8755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":2253,"src":"2869:20:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2856:34:65","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$8702_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":8757,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"registered","nodeType":"MemberAccess","referencedDeclaration":8699,"src":"2856:45:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":8758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2904:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2856:52:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8760,"nodeType":"ExpressionStatement","src":"2856:52:65"},{"expression":{"id":8767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":8761,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8706,"src":"2918:12:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$8702_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":8764,"indexExpression":{"expression":{"id":8762,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2263,"src":"2931:15:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2263_$","typeString":"type(library ProtocolFeeType)"}},"id":8763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":2253,"src":"2931:20:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2918:34:65","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$8702_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":8765,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"name","nodeType":"MemberAccess","referencedDeclaration":8701,"src":"2918:39:65","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"53776170","id":8766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2960:6:65","typeDescriptions":{"typeIdentifier":"t_stringliteral_bce316f0d9d2a3affa97de1d99bb2aac0538e2666d0d8545545ead241ef0ccab","typeString":"literal_string \"Swap\""},"value":"Swap"},"src":"2918:48:65","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":8768,"nodeType":"ExpressionStatement","src":"2918:48:65"},{"expression":{"id":8775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":8769,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8706,"src":"2977:12:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$8702_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":8772,"indexExpression":{"expression":{"id":8770,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2263,"src":"2990:15:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2263_$","typeString":"type(library ProtocolFeeType)"}},"id":8771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"FLASH_LOAN","nodeType":"MemberAccess","referencedDeclaration":2256,"src":"2990:26:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2977:40:65","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$8702_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":8773,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"registered","nodeType":"MemberAccess","referencedDeclaration":8699,"src":"2977:51:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":8774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3031:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2977:58:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8776,"nodeType":"ExpressionStatement","src":"2977:58:65"},{"expression":{"id":8783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":8777,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8706,"src":"3045:12:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$8702_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":8780,"indexExpression":{"expression":{"id":8778,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2263,"src":"3058:15:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2263_$","typeString":"type(library ProtocolFeeType)"}},"id":8779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"FLASH_LOAN","nodeType":"MemberAccess","referencedDeclaration":2256,"src":"3058:26:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3045:40:65","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$8702_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":8781,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"name","nodeType":"MemberAccess","referencedDeclaration":8701,"src":"3045:45:65","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"466c617368204c6f616e","id":8782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3093:12:65","typeDescriptions":{"typeIdentifier":"t_stringliteral_7d188f900809220270edc6e745970c5466117e6e8142df613514e4ca80ce2e34","typeString":"literal_string \"Flash Loan\""},"value":"Flash Loan"},"src":"3045:60:65","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":8784,"nodeType":"ExpressionStatement","src":"3045:60:65"}]},"id":8786,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":8724,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8717,"src":"2004:5:65","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}}],"id":8725,"modifierName":{"id":8723,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4113,"src":"1980:23:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$4113_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1980:30:65"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":8722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8717,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":8786,"src":"1901:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":8716,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"1901:6:65","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":8719,"mutability":"mutable","name":"maxYieldValue","nodeType":"VariableDeclaration","scope":8786,"src":"1923:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8718,"name":"uint256","nodeType":"ElementaryTypeName","src":"1923:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8721,"mutability":"mutable","name":"maxAUMValue","nodeType":"VariableDeclaration","scope":8786,"src":"1954:19:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8720,"name":"uint256","nodeType":"ElementaryTypeName","src":"1954:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1891:88:65"},"returnParameters":{"id":8726,"nodeType":"ParameterList","parameters":[],"src":"2011:0:65"},"scope":9073,"src":"1880:1232:65","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8798,"nodeType":"Block","src":"3161:85:65","statements":[{"expression":{"arguments":[{"arguments":[{"id":8792,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8788,"src":"3194:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8791,"name":"isValidFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8902,"src":"3179:14:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":8793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3179:23:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f6e2d6578697374656e74206665652074797065","id":8794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3204:23:65","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc27d179ec2dbfaa6f01c2b422175e5f8113ee76d764a98b39cf9e2d0f3c9f8c","typeString":"literal_string \"Non-existent fee type\""},"value":"Non-existent fee type"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc27d179ec2dbfaa6f01c2b422175e5f8113ee76d764a98b39cf9e2d0f3c9f8c","typeString":"literal_string \"Non-existent fee type\""}],"id":8790,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3171:7:65","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3171:57:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8796,"nodeType":"ExpressionStatement","src":"3171:57:65"},{"id":8797,"nodeType":"PlaceholderStatement","src":"3238:1:65"}]},"id":8799,"name":"withValidFeeType","nodeType":"ModifierDefinition","parameters":{"id":8789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8788,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":8799,"src":"3144:15:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8787,"name":"uint256","nodeType":"ElementaryTypeName","src":"3144:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3143:17:65"},"src":"3118:128:65","virtual":false,"visibility":"internal"},{"baseFunctions":[2199],"body":{"id":8829,"nodeType":"Block","src":"3427:159:65","statements":[{"expression":{"arguments":[{"id":8818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3445:33:65","subExpression":{"expression":{"baseExpression":{"id":8814,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8706,"src":"3446:12:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$8702_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":8816,"indexExpression":{"id":8815,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8801,"src":"3459:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3446:21:65","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$8702_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":8817,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"registered","nodeType":"MemberAccess","referencedDeclaration":8699,"src":"3446:32:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"466565207479706520616c72656164792072656769737465726564","id":8819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3480:29:65","typeDescriptions":{"typeIdentifier":"t_stringliteral_48c17933ff8219046e94032890837772a3eac6cd33d4cd3258cc53b6ef327ec8","typeString":"literal_string \"Fee type already registered\""},"value":"Fee type already registered"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_48c17933ff8219046e94032890837772a3eac6cd33d4cd3258cc53b6ef327ec8","typeString":"literal_string \"Fee type already registered\""}],"id":8813,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3437:7:65","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3437:73:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8821,"nodeType":"ExpressionStatement","src":"3437:73:65"},{"expression":{"arguments":[{"id":8823,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8801,"src":"3537:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8824,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8803,"src":"3546:4:65","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":8825,"name":"maximumValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8805,"src":"3552:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8826,"name":"initialValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8807,"src":"3566:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8822,"name":"_registerFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8888,"src":"3520:16:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,string memory,uint256,uint256)"}},"id":8827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3520:59:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8828,"nodeType":"ExpressionStatement","src":"3520:59:65"}]},"functionSelector":"7268d6ce","id":8830,"implemented":true,"kind":"function","modifiers":[{"id":8811,"modifierName":{"id":8810,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3399,"src":"3414:12:65","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3414:12:65"}],"name":"registerFeeType","nodeType":"FunctionDefinition","overrides":{"id":8809,"nodeType":"OverrideSpecifier","overrides":[],"src":"3405:8:65"},"parameters":{"id":8808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8801,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":8830,"src":"3286:15:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8800,"name":"uint256","nodeType":"ElementaryTypeName","src":"3286:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8803,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":8830,"src":"3311:18:65","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8802,"name":"string","nodeType":"ElementaryTypeName","src":"3311:6:65","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":8805,"mutability":"mutable","name":"maximumValue","nodeType":"VariableDeclaration","scope":8830,"src":"3339:20:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8804,"name":"uint256","nodeType":"ElementaryTypeName","src":"3339:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8807,"mutability":"mutable","name":"initialValue","nodeType":"VariableDeclaration","scope":8830,"src":"3369:20:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8806,"name":"uint256","nodeType":"ElementaryTypeName","src":"3369:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3276:119:65"},"returnParameters":{"id":8812,"nodeType":"ParameterList","parameters":[],"src":"3427:0:65"},"scope":9073,"src":"3252:334:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8887,"nodeType":"Block","src":"3745:543:65","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8842,"name":"maximumValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8836,"src":"3764:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3779:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3764:16:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":8845,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3763:18:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8846,"name":"maximumValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8836,"src":"3786:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":8847,"name":"_MAX_PROTOCOL_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8709,"src":"3802:28:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3786:44:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":8849,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3785:46:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3763:68:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206d6178696d756d206665652070657263656e74616765","id":8851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3833:32:65","typeDescriptions":{"typeIdentifier":"t_stringliteral_c0dda56f4a1b09c6edec39e0021ac98a409ed3e7412aab60a8b1f75b2f5dbd26","typeString":"literal_string \"Invalid maximum fee percentage\""},"value":"Invalid maximum fee percentage"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c0dda56f4a1b09c6edec39e0021ac98a409ed3e7412aab60a8b1f75b2f5dbd26","typeString":"literal_string \"Invalid maximum fee percentage\""}],"id":8841,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3755:7:65","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3755:111:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8853,"nodeType":"ExpressionStatement","src":"3755:111:65"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8855,"name":"initialValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8838,"src":"3884:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":8856,"name":"maximumValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8836,"src":"3900:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3884:28:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420696e697469616c2070657263656e74616765","id":8858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3914:28:65","typeDescriptions":{"typeIdentifier":"t_stringliteral_0cbcc74c4765f61088179588f76e22a4c8e43ee29da8107b250bce69e460cd8d","typeString":"literal_string \"Invalid initial percentage\""},"value":"Invalid initial percentage"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0cbcc74c4765f61088179588f76e22a4c8e43ee29da8107b250bce69e460cd8d","typeString":"literal_string \"Invalid initial percentage\""}],"id":8854,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3876:7:65","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3876:67:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8860,"nodeType":"ExpressionStatement","src":"3876:67:65"},{"expression":{"id":8874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8861,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8706,"src":"3954:12:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$8702_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":8863,"indexExpression":{"id":8862,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8832,"src":"3967:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3954:21:65","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$8702_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"74727565","id":8865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4016:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":8866,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8834,"src":"4040:4:65","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8867,"name":"maximumValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8836,"src":"4067:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toUint64","nodeType":"MemberAccess","referencedDeclaration":7648,"src":"4067:21:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint64)"}},"id":8869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4067:23:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8870,"name":"initialValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8838,"src":"4111:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toUint64","nodeType":"MemberAccess","referencedDeclaration":7648,"src":"4111:21:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint64)"}},"id":8872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4111:23:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":8864,"name":"FeeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8702,"src":"3978:11:65","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_FeeTypeData_$8702_storage_ptr_$","typeString":"type(struct ProtocolFeePercentagesProvider.FeeTypeData storage pointer)"}},"id":8873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["registered","name","maximum","value"],"nodeType":"FunctionCall","src":"3978:167:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$8702_memory_ptr","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData memory"}},"src":"3954:191:65","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$8702_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":8875,"nodeType":"ExpressionStatement","src":"3954:191:65"},{"eventCall":{"arguments":[{"id":8877,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8832,"src":"4187:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8878,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8834,"src":"4196:4:65","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":8879,"name":"maximumValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8836,"src":"4202:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8876,"name":"ProtocolFeeTypeRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2181,"src":"4161:25:65","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (uint256,string memory,uint256)"}},"id":8880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4161:54:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8881,"nodeType":"EmitStatement","src":"4156:59:65"},{"eventCall":{"arguments":[{"id":8883,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8832,"src":"4259:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8884,"name":"initialValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8838,"src":"4268:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8882,"name":"ProtocolFeePercentageChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2187,"src":"4230:28:65","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":8885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4230:51:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8886,"nodeType":"EmitStatement","src":"4225:56:65"}]},"id":8888,"implemented":true,"kind":"function","modifiers":[],"name":"_registerFeeType","nodeType":"FunctionDefinition","parameters":{"id":8839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8832,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":8888,"src":"3627:15:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8831,"name":"uint256","nodeType":"ElementaryTypeName","src":"3627:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8834,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":8888,"src":"3652:18:65","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8833,"name":"string","nodeType":"ElementaryTypeName","src":"3652:6:65","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":8836,"mutability":"mutable","name":"maximumValue","nodeType":"VariableDeclaration","scope":8888,"src":"3680:20:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8835,"name":"uint256","nodeType":"ElementaryTypeName","src":"3680:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8838,"mutability":"mutable","name":"initialValue","nodeType":"VariableDeclaration","scope":8888,"src":"3710:20:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8837,"name":"uint256","nodeType":"ElementaryTypeName","src":"3710:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3617:119:65"},"returnParameters":{"id":8840,"nodeType":"ParameterList","parameters":[],"src":"3745:0:65"},"scope":9073,"src":"3592:696:65","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[2207],"body":{"id":8901,"nodeType":"Block","src":"4371:56:65","statements":[{"expression":{"expression":{"baseExpression":{"id":8896,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8706,"src":"4388:12:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$8702_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":8898,"indexExpression":{"id":8897,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8890,"src":"4401:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4388:21:65","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$8702_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":8899,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"registered","nodeType":"MemberAccess","referencedDeclaration":8699,"src":"4388:32:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8895,"id":8900,"nodeType":"Return","src":"4381:39:65"}]},"functionSelector":"868897a0","id":8902,"implemented":true,"kind":"function","modifiers":[],"name":"isValidFeeType","nodeType":"FunctionDefinition","overrides":{"id":8892,"nodeType":"OverrideSpecifier","overrides":[],"src":"4347:8:65"},"parameters":{"id":8891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8890,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":8902,"src":"4318:15:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8889,"name":"uint256","nodeType":"ElementaryTypeName","src":"4318:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4317:17:65"},"returnParameters":{"id":8895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8894,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8902,"src":"4365:4:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8893,"name":"bool","nodeType":"ElementaryTypeName","src":"4365:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4364:6:65"},"scope":9073,"src":"4294:133:65","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2217],"body":{"id":8921,"nodeType":"Block","src":"4605:69:65","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8915,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8906,"src":"4622:5:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":8917,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8904,"src":"4659:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8916,"name":"getFeeTypeMaximumPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9055,"src":"4631:27:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":8918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4631:36:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4622:45:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8914,"id":8920,"nodeType":"Return","src":"4615:52:65"}]},"functionSelector":"74735e0b","id":8922,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":8910,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8904,"src":"4569:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8911,"modifierName":{"id":8909,"name":"withValidFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8799,"src":"4552:16:65","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"4552:25:65"}],"name":"isValidFeeTypePercentage","nodeType":"FunctionDefinition","overrides":{"id":8908,"nodeType":"OverrideSpecifier","overrides":[],"src":"4535:8:65"},"parameters":{"id":8907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8904,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":8922,"src":"4467:15:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8903,"name":"uint256","nodeType":"ElementaryTypeName","src":"4467:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8906,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8922,"src":"4484:13:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8905,"name":"uint256","nodeType":"ElementaryTypeName","src":"4484:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4466:32:65"},"returnParameters":{"id":8914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8913,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8922,"src":"4595:4:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8912,"name":"bool","nodeType":"ElementaryTypeName","src":"4595:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4594:6:65"},"scope":9073,"src":"4433:241:65","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2225],"body":{"id":8982,"nodeType":"Block","src":"4838:495:65","statements":[{"expression":{"arguments":[{"arguments":[{"id":8937,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8924,"src":"4881:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8938,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8926,"src":"4890:8:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8936,"name":"isValidFeeTypePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8922,"src":"4856:24:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) view returns (bool)"}},"id":8939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4856:43:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206665652070657263656e74616765","id":8940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4901:24:65","typeDescriptions":{"typeIdentifier":"t_stringliteral_f72be47e09c433cff91d0c97ed6378549a17c29bc29d6cbd73ed6a4c886f6157","typeString":"literal_string \"Invalid fee percentage\""},"value":"Invalid fee percentage"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f72be47e09c433cff91d0c97ed6378549a17c29bc29d6cbd73ed6a4c886f6157","typeString":"literal_string \"Invalid fee percentage\""}],"id":8935,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4848:7:65","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4848:78:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8942,"nodeType":"ExpressionStatement","src":"4848:78:65"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8943,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8924,"src":"4941:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":8944,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2263,"src":"4952:15:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2263_$","typeString":"type(library ProtocolFeeType)"}},"id":8945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":2253,"src":"4952:20:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4941:31:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8954,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8924,"src":"5062:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":8955,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2263,"src":"5073:15:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2263_$","typeString":"type(library ProtocolFeeType)"}},"id":8956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"FLASH_LOAN","nodeType":"MemberAccess","referencedDeclaration":2256,"src":"5073:26:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5062:37:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8974,"nodeType":"Block","src":"5190:74:65","statements":[{"expression":{"id":8972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":8965,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8706,"src":"5204:12:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$8702_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":8967,"indexExpression":{"id":8966,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8924,"src":"5217:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5204:21:65","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$8702_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":8968,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":8695,"src":"5204:27:65","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8969,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8926,"src":"5234:8:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toUint64","nodeType":"MemberAccess","referencedDeclaration":7648,"src":"5234:17:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint64)"}},"id":8971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5234:19:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"5204:49:65","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":8973,"nodeType":"ExpressionStatement","src":"5204:49:65"}]},"id":8975,"nodeType":"IfStatement","src":"5058:206:65","trueBody":{"id":8964,"nodeType":"Block","src":"5101:83:65","statements":[{"expression":{"arguments":[{"id":8961,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8926,"src":"5164:8:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8958,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8693,"src":"5115:22:65","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"id":8960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setFlashLoanFeePercentage","nodeType":"MemberAccess","referencedDeclaration":2876,"src":"5115:48:65","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":8962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5115:58:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8963,"nodeType":"ExpressionStatement","src":"5115:58:65"}]}},"id":8976,"nodeType":"IfStatement","src":"4937:327:65","trueBody":{"id":8953,"nodeType":"Block","src":"4974:78:65","statements":[{"expression":{"arguments":[{"id":8950,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8926,"src":"5032:8:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8947,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8693,"src":"4988:22:65","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"id":8949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":2871,"src":"4988:43:65","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":8951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4988:53:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8952,"nodeType":"ExpressionStatement","src":"4988:53:65"}]}},{"eventCall":{"arguments":[{"id":8978,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8924,"src":"5308:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8979,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8926,"src":"5317:8:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8977,"name":"ProtocolFeePercentageChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2187,"src":"5279:28:65","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":8980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5279:47:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8981,"nodeType":"EmitStatement","src":"5274:52:65"}]},"functionSelector":"4d44f0e9","id":8983,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":8930,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8924,"src":"4804:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8931,"modifierName":{"id":8929,"name":"withValidFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8799,"src":"4787:16:65","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"4787:25:65"},{"id":8933,"modifierName":{"id":8932,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3399,"src":"4821:12:65","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4821:12:65"}],"name":"setFeeTypePercentage","nodeType":"FunctionDefinition","overrides":{"id":8928,"nodeType":"OverrideSpecifier","overrides":[],"src":"4770:8:65"},"parameters":{"id":8927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8924,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":8983,"src":"4710:15:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8923,"name":"uint256","nodeType":"ElementaryTypeName","src":"4710:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8926,"mutability":"mutable","name":"newValue","nodeType":"VariableDeclaration","scope":8983,"src":"4727:16:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8925,"name":"uint256","nodeType":"ElementaryTypeName","src":"4727:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4709:35:65"},"returnParameters":{"id":8934,"nodeType":"ParameterList","parameters":[],"src":"4838:0:65"},"scope":9073,"src":"4680:653:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2233],"body":{"id":9020,"nodeType":"Block","src":"5453:326:65","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8994,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8985,"src":"5467:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":8995,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2263,"src":"5478:15:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2263_$","typeString":"type(library ProtocolFeeType)"}},"id":8996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":2253,"src":"5478:20:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5467:31:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9003,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8985,"src":"5587:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9004,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2263,"src":"5598:15:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2263_$","typeString":"type(library ProtocolFeeType)"}},"id":9005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"FLASH_LOAN","nodeType":"MemberAccess","referencedDeclaration":2256,"src":"5598:26:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5587:37:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9017,"nodeType":"Block","src":"5714:59:65","statements":[{"expression":{"expression":{"baseExpression":{"id":9012,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8706,"src":"5735:12:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$8702_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":9014,"indexExpression":{"id":9013,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8985,"src":"5748:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5735:21:65","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$8702_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":9015,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":8695,"src":"5735:27:65","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":8993,"id":9016,"nodeType":"Return","src":"5728:34:65"}]},"id":9018,"nodeType":"IfStatement","src":"5583:190:65","trueBody":{"id":9011,"nodeType":"Block","src":"5626:82:65","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9007,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8693,"src":"5647:22:65","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"id":9008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getFlashLoanFeePercentage","nodeType":"MemberAccess","referencedDeclaration":2886,"src":"5647:48:65","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":9009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5647:50:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8993,"id":9010,"nodeType":"Return","src":"5640:57:65"}]}},"id":9019,"nodeType":"IfStatement","src":"5463:310:65","trueBody":{"id":9002,"nodeType":"Block","src":"5500:77:65","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8998,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8693,"src":"5521:22:65","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"id":8999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":2881,"src":"5521:43:65","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":9000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5521:45:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8993,"id":9001,"nodeType":"Return","src":"5514:52:65"}]}}]},"functionSelector":"1a7c3263","id":9021,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":8989,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8985,"src":"5426:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8990,"modifierName":{"id":8988,"name":"withValidFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8799,"src":"5409:16:65","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"5409:25:65"}],"name":"getFeeTypePercentage","nodeType":"FunctionDefinition","overrides":{"id":8987,"nodeType":"OverrideSpecifier","overrides":[],"src":"5400:8:65"},"parameters":{"id":8986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8985,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":9021,"src":"5369:15:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8984,"name":"uint256","nodeType":"ElementaryTypeName","src":"5369:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5368:17:65"},"returnParameters":{"id":8993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8992,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9021,"src":"5444:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8991,"name":"uint256","nodeType":"ElementaryTypeName","src":"5444:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5443:9:65"},"scope":9073,"src":"5339:440:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2241],"body":{"id":9054,"nodeType":"Block","src":"5948:305:65","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9032,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9023,"src":"5962:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9033,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2263,"src":"5973:15:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2263_$","typeString":"type(library ProtocolFeeType)"}},"id":9034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":2253,"src":"5973:20:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5962:31:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9039,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9023,"src":"6070:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9040,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2263,"src":"6081:15:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2263_$","typeString":"type(library ProtocolFeeType)"}},"id":9041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"FLASH_LOAN","nodeType":"MemberAccess","referencedDeclaration":2256,"src":"6081:26:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6070:37:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9051,"nodeType":"Block","src":"6186:61:65","statements":[{"expression":{"expression":{"baseExpression":{"id":9046,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8706,"src":"6207:12:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$8702_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":9048,"indexExpression":{"id":9047,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9023,"src":"6220:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6207:21:65","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$8702_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":9049,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"maximum","nodeType":"MemberAccess","referencedDeclaration":8697,"src":"6207:29:65","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":9031,"id":9050,"nodeType":"Return","src":"6200:36:65"}]},"id":9052,"nodeType":"IfStatement","src":"6066:181:65","trueBody":{"id":9045,"nodeType":"Block","src":"6109:71:65","statements":[{"expression":{"id":9043,"name":"_MAX_PROTOCOL_FLASH_LOAN_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8715,"src":"6130:39:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9031,"id":9044,"nodeType":"Return","src":"6123:46:65"}]}},"id":9053,"nodeType":"IfStatement","src":"5958:289:65","trueBody":{"id":9038,"nodeType":"Block","src":"5995:65:65","statements":[{"expression":{"id":9036,"name":"_MAX_PROTOCOL_SWAP_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8712,"src":"6016:33:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9031,"id":9037,"nodeType":"Return","src":"6009:40:65"}]}}]},"functionSelector":"5e2cae4c","id":9055,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9027,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9023,"src":"5909:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9028,"modifierName":{"id":9026,"name":"withValidFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8799,"src":"5892:16:65","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"5892:25:65"}],"name":"getFeeTypeMaximumPercentage","nodeType":"FunctionDefinition","overrides":{"id":9025,"nodeType":"OverrideSpecifier","overrides":[],"src":"5875:8:65"},"parameters":{"id":9024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9023,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":9055,"src":"5822:15:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9022,"name":"uint256","nodeType":"ElementaryTypeName","src":"5822:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5821:17:65"},"returnParameters":{"id":9031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9030,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9055,"src":"5935:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9029,"name":"uint256","nodeType":"ElementaryTypeName","src":"5935:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5934:9:65"},"scope":9073,"src":"5785:468:65","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2249],"body":{"id":9071,"nodeType":"Block","src":"6373:50:65","statements":[{"expression":{"expression":{"baseExpression":{"id":9066,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8706,"src":"6390:12:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$8702_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":9068,"indexExpression":{"id":9067,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9057,"src":"6403:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6390:21:65","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$8702_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":9069,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"name","nodeType":"MemberAccess","referencedDeclaration":8701,"src":"6390:26:65","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":9065,"id":9070,"nodeType":"Return","src":"6383:33:65"}]},"functionSelector":"b661eda1","id":9072,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9061,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9057,"src":"6340:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9062,"modifierName":{"id":9060,"name":"withValidFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8799,"src":"6323:16:65","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"6323:25:65"}],"name":"getFeeTypeName","nodeType":"FunctionDefinition","overrides":{"id":9059,"nodeType":"OverrideSpecifier","overrides":[],"src":"6314:8:65"},"parameters":{"id":9058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9057,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":9072,"src":"6283:15:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9056,"name":"uint256","nodeType":"ElementaryTypeName","src":"6283:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6282:17:65"},"returnParameters":{"id":9065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9064,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9072,"src":"6358:13:65","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9063,"name":"string","nodeType":"ElementaryTypeName","src":"6358:6:65","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6357:15:65"},"scope":9073,"src":"6259:164:65","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":9074,"src":"1101:5324:65"}],"src":"688:5738:65"},"id":65},"contracts/ProtocolFeesWithdrawer.sol":{"ast":{"absolutePath":"contracts/ProtocolFeesWithdrawer.sol","exportedSymbols":{"ProtocolFeesWithdrawer":[9321]},"id":9322,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9075,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:66"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol","id":9076,"nodeType":"ImportDirective","scope":9322,"sourceUnit":2338,"src":"713:93:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":9077,"nodeType":"ImportDirective","scope":9322,"sourceUnit":3372,"src":"807:65:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":9078,"nodeType":"ImportDirective","scope":9322,"sourceUnit":4114,"src":"874:88:66","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","id":9079,"nodeType":"ImportDirective","scope":9322,"sourceUnit":7539,"src":"963:83:66","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9081,"name":"IProtocolFeesWithdrawer","nodeType":"UserDefinedTypeName","referencedDeclaration":2337,"src":"1402:23:66","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2337","typeString":"contract IProtocolFeesWithdrawer"}},"id":9082,"nodeType":"InheritanceSpecifier","src":"1402:23:66"},{"baseName":{"id":9083,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":4113,"src":"1427:23:66","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$4113","typeString":"contract SingletonAuthentication"}},"id":9084,"nodeType":"InheritanceSpecifier","src":"1427:23:66"}],"contractDependencies":[1754,2337,3448,4113],"contractKind":"contract","documentation":{"id":9080,"nodeType":"StructuredDocumentation","src":"1048:318:66","text":" @author Balancer Labs\n @title Protocol Fees Withdrawer\n @notice Safety layer around the Protocol Fees Collector which allows withdrawals of specific tokens to be blocked.\n This is useful for the case where tokens that shouldn't be distributed are unexpectedly paid into the Protocol\n Fees Collector."},"fullyImplemented":true,"id":9321,"linearizedBaseContracts":[9321,4113,3448,1754,2337],"name":"ProtocolFeesWithdrawer","nodeType":"ContractDefinition","nodes":[{"id":9087,"libraryName":{"id":9085,"name":"EnumerableSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7538,"src":"1463:13:66","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableSet_$7538","typeString":"library EnumerableSet"}},"nodeType":"UsingForDirective","src":"1457:49:66","typeName":{"id":9086,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7097,"src":"1481:24:66","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}}},{"constant":false,"id":9089,"mutability":"immutable","name":"_protocolFeesCollector","nodeType":"VariableDeclaration","scope":9321,"src":"1512:63:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":9088,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":2906,"src":"1512:22:66","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"visibility":"private"},{"constant":false,"id":9091,"mutability":"mutable","name":"_denylistedTokens","nodeType":"VariableDeclaration","scope":9321,"src":"1582:50:66","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":9090,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7097,"src":"1582:24:66","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"private"},{"body":{"id":9131,"nodeType":"Block","src":"1733:249:66","statements":[{"expression":{"id":9106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9102,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9089,"src":"1743:22:66","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9103,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9093,"src":"1768:5:66","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":9104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":3358,"src":"1768:30:66","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$2906_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":9105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1768:32:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"src":"1743:57:66","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"id":9107,"nodeType":"ExpressionStatement","src":"1743:57:66"},{"assignments":[9109],"declarations":[{"constant":false,"id":9109,"mutability":"mutable","name":"tokensLength","nodeType":"VariableDeclaration","scope":9131,"src":"1811:20:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9108,"name":"uint256","nodeType":"ElementaryTypeName","src":"1811:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9112,"initialValue":{"expression":{"id":9110,"name":"initialDeniedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9096,"src":"1834:19:66","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":9111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1834:26:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1811:49:66"},{"body":{"id":9129,"nodeType":"Block","src":"1913:63:66","statements":[{"expression":{"arguments":[{"baseExpression":{"id":9124,"name":"initialDeniedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9096,"src":"1942:19:66","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":9126,"indexExpression":{"id":9125,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9114,"src":"1962:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1942:22:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}],"id":9123,"name":"_denylistToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9320,"src":"1927:14:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1964_$returns$__$","typeString":"function (contract IERC20)"}},"id":9127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1927:38:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9128,"nodeType":"ExpressionStatement","src":"1927:38:66"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9117,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9114,"src":"1890:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9118,"name":"tokensLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9109,"src":"1894:12:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1890:16:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9130,"initializationExpression":{"assignments":[9114],"declarations":[{"constant":false,"id":9114,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":9130,"src":"1875:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9113,"name":"uint256","nodeType":"ElementaryTypeName","src":"1875:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9116,"initialValue":{"hexValue":"30","id":9115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1887:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1875:13:66"},"loopExpression":{"expression":{"id":9121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1908:3:66","subExpression":{"id":9120,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9114,"src":"1910:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9122,"nodeType":"ExpressionStatement","src":"1908:3:66"},"nodeType":"ForStatement","src":"1870:106:66"}]},"id":9132,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9099,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9093,"src":"1726:5:66","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}}],"id":9100,"modifierName":{"id":9098,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4113,"src":"1702:23:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$4113_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1702:30:66"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9093,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":9132,"src":"1651:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":9092,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"1651:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":9096,"mutability":"mutable","name":"initialDeniedTokens","nodeType":"VariableDeclaration","scope":9132,"src":"1665:35:66","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":9094,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1665:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":9095,"nodeType":"ArrayTypeName","src":"1665:8:66","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1650:51:66"},"returnParameters":{"id":9101,"nodeType":"ParameterList","parameters":[],"src":"1733:0:66"},"scope":9321,"src":"1639:343:66","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2281],"body":{"id":9141,"nodeType":"Block","src":"2162:46:66","statements":[{"expression":{"id":9139,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9089,"src":"2179:22:66","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"functionReturnParameters":9138,"id":9140,"nodeType":"Return","src":"2172:29:66"}]},"documentation":{"id":9133,"nodeType":"StructuredDocumentation","src":"1988:77:66","text":" @notice Returns the address of the Protocol Fee Collector."},"functionSelector":"d2946c2b","id":9142,"implemented":true,"kind":"function","modifiers":[],"name":"getProtocolFeesCollector","nodeType":"FunctionDefinition","overrides":{"id":9135,"nodeType":"OverrideSpecifier","overrides":[],"src":"2120:8:66"},"parameters":{"id":9134,"nodeType":"ParameterList","parameters":[],"src":"2103:2:66"},"returnParameters":{"id":9138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9137,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9142,"src":"2138:22:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":9136,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":2906,"src":"2138:22:66","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"src":"2137:24:66"},"scope":9321,"src":"2070:138:66","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2289],"body":{"id":9160,"nodeType":"Block","src":"2408:67:66","statements":[{"expression":{"id":9158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2425:43:66","subExpression":{"arguments":[{"arguments":[{"id":9155,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9145,"src":"2461:5:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}],"id":9154,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2453:7:66","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9153,"name":"address","nodeType":"ElementaryTypeName","src":"2453:7:66","typeDescriptions":{}}},"id":9156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2453:14:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9151,"name":"_denylistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9091,"src":"2426:17:66","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9152,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":7241,"src":"2426:26:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$7097_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$7097_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)"}},"id":9157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2426:42:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9150,"id":9159,"nodeType":"Return","src":"2418:50:66"}]},"documentation":{"id":9143,"nodeType":"StructuredDocumentation","src":"2214:110:66","text":" @notice Returns whether the provided token may be withdrawn from the Protocol Fee Collector"},"functionSelector":"cdf0e934","id":9161,"implemented":true,"kind":"function","modifiers":[],"name":"isWithdrawableToken","nodeType":"FunctionDefinition","overrides":{"id":9147,"nodeType":"OverrideSpecifier","overrides":[],"src":"2384:8:66"},"parameters":{"id":9146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9145,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":9161,"src":"2358:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":9144,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2358:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2357:14:66"},"returnParameters":{"id":9150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9149,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9161,"src":"2402:4:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9148,"name":"bool","nodeType":"ElementaryTypeName","src":"2402:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2401:6:66"},"scope":9321,"src":"2329:146:66","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2298],"body":{"id":9199,"nodeType":"Block","src":"2752:200:66","statements":[{"assignments":[9172],"declarations":[{"constant":false,"id":9172,"mutability":"mutable","name":"tokensLength","nodeType":"VariableDeclaration","scope":9199,"src":"2762:20:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9171,"name":"uint256","nodeType":"ElementaryTypeName","src":"2762:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9175,"initialValue":{"expression":{"id":9173,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9165,"src":"2785:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":9174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2785:13:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2762:36:66"},{"body":{"id":9195,"nodeType":"Block","src":"2851:74:66","statements":[{"condition":{"id":9191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2869:31:66","subExpression":{"arguments":[{"baseExpression":{"id":9187,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9165,"src":"2890:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":9189,"indexExpression":{"id":9188,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9177,"src":"2897:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2890:9:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}],"id":9186,"name":"isWithdrawableToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9161,"src":"2870:19:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20_$1964_$returns$_t_bool_$","typeString":"function (contract IERC20) view returns (bool)"}},"id":9190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2870:30:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9194,"nodeType":"IfStatement","src":"2865:49:66","trueBody":{"expression":{"hexValue":"66616c7365","id":9192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2909:5:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":9170,"id":9193,"nodeType":"Return","src":"2902:12:66"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9180,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9177,"src":"2828:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9181,"name":"tokensLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9172,"src":"2832:12:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2828:16:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9196,"initializationExpression":{"assignments":[9177],"declarations":[{"constant":false,"id":9177,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":9196,"src":"2813:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9176,"name":"uint256","nodeType":"ElementaryTypeName","src":"2813:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9179,"initialValue":{"hexValue":"30","id":9178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2825:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2813:13:66"},"loopExpression":{"expression":{"id":9184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2846:3:66","subExpression":{"id":9183,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9177,"src":"2848:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9185,"nodeType":"ExpressionStatement","src":"2846:3:66"},"nodeType":"ForStatement","src":"2808:117:66"},{"expression":{"hexValue":"74727565","id":9197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2941:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":9170,"id":9198,"nodeType":"Return","src":"2934:11:66"}]},"documentation":{"id":9162,"nodeType":"StructuredDocumentation","src":"2481:174:66","text":" @notice Returns whether the provided array of tokens may be withdrawn from the Protocol Fee Collector\n @dev Returns false if any token is denylisted."},"functionSelector":"a21dfaee","id":9200,"implemented":true,"kind":"function","modifiers":[],"name":"isWithdrawableTokens","nodeType":"FunctionDefinition","overrides":{"id":9167,"nodeType":"OverrideSpecifier","overrides":[],"src":"2728:8:66"},"parameters":{"id":9166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9165,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":9200,"src":"2690:24:66","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":9163,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2690:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":9164,"nodeType":"ArrayTypeName","src":"2690:8:66","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"2689:26:66"},"returnParameters":{"id":9170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9169,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9200,"src":"2746:4:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9168,"name":"bool","nodeType":"ElementaryTypeName","src":"2746:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2745:6:66"},"scope":9321,"src":"2660:292:66","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2306],"body":{"id":9216,"nodeType":"Block","src":"3123:59:66","statements":[{"expression":{"arguments":[{"arguments":[{"id":9212,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9203,"src":"3168:5:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9210,"name":"_denylistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9091,"src":"3147:17:66","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9211,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":7280,"src":"3147:20:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$7097_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$7097_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":9213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3147:27:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9209,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"3140:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":9214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3140:35:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"functionReturnParameters":9208,"id":9215,"nodeType":"Return","src":"3133:42:66"}]},"documentation":{"id":9201,"nodeType":"StructuredDocumentation","src":"2958:77:66","text":" @notice Returns the denylisted token at the given `index`."},"functionSelector":"fd3a0cdd","id":9217,"implemented":true,"kind":"function","modifiers":[],"name":"getDenylistedToken","nodeType":"FunctionDefinition","overrides":{"id":9205,"nodeType":"OverrideSpecifier","overrides":[],"src":"3097:8:66"},"parameters":{"id":9204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9203,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":9217,"src":"3068:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9202,"name":"uint256","nodeType":"ElementaryTypeName","src":"3068:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3067:15:66"},"returnParameters":{"id":9208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9207,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9217,"src":"3115:6:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":9206,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"3115:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"3114:8:66"},"scope":9321,"src":"3040:142:66","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2312],"body":{"id":9228,"nodeType":"Block","src":"3338:50:66","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9224,"name":"_denylistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9091,"src":"3355:17:66","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9225,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":7254,"src":"3355:24:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$7097_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$7097_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":9226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3355:26:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9223,"id":9227,"nodeType":"Return","src":"3348:33:66"}]},"documentation":{"id":9218,"nodeType":"StructuredDocumentation","src":"3188:67:66","text":" @notice Returns the number of denylisted tokens."},"functionSelector":"8dd26fc6","id":9229,"implemented":true,"kind":"function","modifiers":[],"name":"getDenylistedTokensLength","nodeType":"FunctionDefinition","overrides":{"id":9220,"nodeType":"OverrideSpecifier","overrides":[],"src":"3311:8:66"},"parameters":{"id":9219,"nodeType":"ParameterList","parameters":[],"src":"3294:2:66"},"returnParameters":{"id":9223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9222,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9229,"src":"3329:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9221,"name":"uint256","nodeType":"ElementaryTypeName","src":"3329:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3328:9:66"},"scope":9321,"src":"3260:128:66","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2324],"body":{"id":9259,"nodeType":"Block","src":"3920:278:66","statements":[{"expression":{"arguments":[{"arguments":[{"id":9246,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9233,"src":"3959:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}],"id":9245,"name":"isWithdrawableTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9200,"src":"3938:20:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_contract$_IERC20_$1964_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20[] calldata) view returns (bool)"}},"id":9247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3938:28:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"417474656d7074696e6720746f2077697468647261772064656e796c697374656420746f6b656e","id":9248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3968:41:66","typeDescriptions":{"typeIdentifier":"t_stringliteral_19b1c525db6270d24ffce14b0de2fdb6c258ca6e7e56d11a41e5d2c40ce420fb","typeString":"literal_string \"Attempting to withdraw denylisted token\""},"value":"Attempting to withdraw denylisted token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_19b1c525db6270d24ffce14b0de2fdb6c258ca6e7e56d11a41e5d2c40ce420fb","typeString":"literal_string \"Attempting to withdraw denylisted token\""}],"id":9244,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3930:7:66","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3930:80:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9250,"nodeType":"ExpressionStatement","src":"3930:80:66"},{"expression":{"arguments":[{"id":9254,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9233,"src":"4164:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},{"id":9255,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9236,"src":"4172:7:66","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"id":9256,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9238,"src":"4181:9:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9251,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9089,"src":"4119:22:66","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"id":9253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdrawCollectedFees","nodeType":"MemberAccess","referencedDeclaration":2866,"src":"4119:44:66","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (contract IERC20[] memory,uint256[] memory,address) external"}},"id":9257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4119:72:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9258,"nodeType":"ExpressionStatement","src":"4119:72:66"}]},"documentation":{"id":9230,"nodeType":"StructuredDocumentation","src":"3394:356:66","text":" @notice Withdraws fees from the Protocol Fee Collector.\n @dev Reverts if attempting to withdraw a denylisted token.\n @param tokens - an array of token addresses to withdraw.\n @param amounts - an array of the amounts of each token to withdraw.\n @param recipient - the address to which to send the withdrawn tokens."},"functionSelector":"6daefab6","id":9260,"implemented":true,"kind":"function","modifiers":[{"id":9242,"modifierName":{"id":9241,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3399,"src":"3907:12:66","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3907:12:66"}],"name":"withdrawCollectedFees","nodeType":"FunctionDefinition","overrides":{"id":9240,"nodeType":"OverrideSpecifier","overrides":[],"src":"3898:8:66"},"parameters":{"id":9239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9233,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":9260,"src":"3795:24:66","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":9231,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"3795:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":9232,"nodeType":"ArrayTypeName","src":"3795:8:66","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":9236,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":9260,"src":"3829:26:66","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9234,"name":"uint256","nodeType":"ElementaryTypeName","src":"3829:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9235,"nodeType":"ArrayTypeName","src":"3829:9:66","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9238,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":9260,"src":"3865:17:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9237,"name":"address","nodeType":"ElementaryTypeName","src":"3865:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3785:103:66"},"returnParameters":{"id":9243,"nodeType":"ParameterList","parameters":[],"src":"3920:0:66"},"scope":9321,"src":"3755:443:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2330],"body":{"id":9273,"nodeType":"Block","src":"4389:38:66","statements":[{"expression":{"arguments":[{"id":9270,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9263,"src":"4414:5:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}],"id":9269,"name":"_denylistToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9320,"src":"4399:14:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1964_$returns$__$","typeString":"function (contract IERC20)"}},"id":9271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4399:21:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9272,"nodeType":"ExpressionStatement","src":"4399:21:66"}]},"documentation":{"id":9261,"nodeType":"StructuredDocumentation","src":"4204:112:66","text":" @notice Marks the provided token as ineligible for withdrawal from the Protocol Fee Collector"},"functionSelector":"194d810f","id":9274,"implemented":true,"kind":"function","modifiers":[{"id":9267,"modifierName":{"id":9266,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3399,"src":"4376:12:66","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4376:12:66"}],"name":"denylistToken","nodeType":"FunctionDefinition","overrides":{"id":9265,"nodeType":"OverrideSpecifier","overrides":[],"src":"4367:8:66"},"parameters":{"id":9264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9263,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":9274,"src":"4344:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":9262,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"4344:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"4343:14:66"},"returnParameters":{"id":9268,"nodeType":"ParameterList","parameters":[],"src":"4389:0:66"},"scope":9321,"src":"4321:106:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2336],"body":{"id":9298,"nodeType":"Block","src":"4617:131:66","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":9288,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9277,"src":"4668:5:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}],"id":9287,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4660:7:66","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9286,"name":"address","nodeType":"ElementaryTypeName","src":"4660:7:66","typeDescriptions":{}}},"id":9289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4660:14:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9284,"name":"_denylistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9091,"src":"4635:17:66","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9285,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":7223,"src":"4635:24:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$7097_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$7097_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":9290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4635:40:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e206973206e6f742064656e796c6973746564","id":9291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4677:25:66","typeDescriptions":{"typeIdentifier":"t_stringliteral_33e021e2a64a5b84721e35d2c04a6aea44077b5ba7c92f440dddcaeae1690de2","typeString":"literal_string \"Token is not denylisted\""},"value":"Token is not denylisted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_33e021e2a64a5b84721e35d2c04a6aea44077b5ba7c92f440dddcaeae1690de2","typeString":"literal_string \"Token is not denylisted\""}],"id":9283,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4627:7:66","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4627:76:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9293,"nodeType":"ExpressionStatement","src":"4627:76:66"},{"eventCall":{"arguments":[{"id":9295,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9277,"src":"4735:5:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}],"id":9294,"name":"TokenAllowlisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2271,"src":"4718:16:66","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IERC20_$1964_$returns$__$","typeString":"function (contract IERC20)"}},"id":9296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4718:23:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9297,"nodeType":"EmitStatement","src":"4713:28:66"}]},"documentation":{"id":9275,"nodeType":"StructuredDocumentation","src":"4433:110:66","text":" @notice Marks the provided token as eligible for withdrawal from the Protocol Fee Collector"},"functionSelector":"de0b27c9","id":9299,"implemented":true,"kind":"function","modifiers":[{"id":9281,"modifierName":{"id":9280,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3399,"src":"4604:12:66","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4604:12:66"}],"name":"allowlistToken","nodeType":"FunctionDefinition","overrides":{"id":9279,"nodeType":"OverrideSpecifier","overrides":[],"src":"4595:8:66"},"parameters":{"id":9278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9277,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":9299,"src":"4572:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":9276,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"4572:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"4571:14:66"},"returnParameters":{"id":9282,"nodeType":"ParameterList","parameters":[],"src":"4617:0:66"},"scope":9321,"src":"4548:200:66","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9319,"nodeType":"Block","src":"4828:128:66","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":9309,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9301,"src":"4876:5:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}],"id":9308,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4868:7:66","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9307,"name":"address","nodeType":"ElementaryTypeName","src":"4868:7:66","typeDescriptions":{}}},"id":9310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4868:14:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9305,"name":"_denylistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9091,"src":"4846:17:66","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7097_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9306,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7138,"src":"4846:21:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$7097_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$7097_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":9311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4846:37:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e20616c72656164792064656e796c6973746564","id":9312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4885:26:66","typeDescriptions":{"typeIdentifier":"t_stringliteral_912f68a3924e05a4aac2ce11062174dbaf62232998a296a28b3e93bcea2176c5","typeString":"literal_string \"Token already denylisted\""},"value":"Token already denylisted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_912f68a3924e05a4aac2ce11062174dbaf62232998a296a28b3e93bcea2176c5","typeString":"literal_string \"Token already denylisted\""}],"id":9304,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4838:7:66","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4838:74:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9314,"nodeType":"ExpressionStatement","src":"4838:74:66"},{"eventCall":{"arguments":[{"id":9316,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9301,"src":"4943:5:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}],"id":9315,"name":"TokenDenylisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2275,"src":"4927:15:66","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IERC20_$1964_$returns$__$","typeString":"function (contract IERC20)"}},"id":9317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4927:22:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9318,"nodeType":"EmitStatement","src":"4922:27:66"}]},"id":9320,"implemented":true,"kind":"function","modifiers":[],"name":"_denylistToken","nodeType":"FunctionDefinition","parameters":{"id":9302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9301,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":9320,"src":"4805:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":9300,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"4805:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"4804:14:66"},"returnParameters":{"id":9303,"nodeType":"ParameterList","parameters":[],"src":"4828:0:66"},"scope":9321,"src":"4781:175:66","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":9322,"src":"1367:3591:66"}],"src":"688:4271:66"},"id":66},"contracts/relayer/AaveWrapping.sol":{"ast":{"absolutePath":"contracts/relayer/AaveWrapping.sol","exportedSymbols":{"AaveWrapping":[9493]},"id":9494,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9323,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:67"},{"id":9324,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:67"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol","id":9325,"nodeType":"ImportDirective","scope":9494,"sourceUnit":2585,"src":"747:85:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":9326,"nodeType":"ImportDirective","scope":9494,"sourceUnit":3372,"src":"833:65:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":9327,"nodeType":"ImportDirective","scope":9494,"sourceUnit":6338,"src":"900:77:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":9328,"nodeType":"ImportDirective","scope":9494,"sourceUnit":10571,"src":"979:35:67","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":9330,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":10570,"src":"1263:19:67","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$10570","typeString":"contract IBaseRelayerLibrary"}},"id":9331,"nodeType":"InheritanceSpecifier","src":"1263:19:67"}],"contractDependencies":[8042,10570],"contractKind":"contract","documentation":{"id":9329,"nodeType":"StructuredDocumentation","src":"1016:212:67","text":" @title AaveWrapping\n @notice Allows users to wrap and unwrap Aave's aTokens into their StaticAToken wrappers\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":9493,"linearizedBaseContracts":[9493,10570,8042],"name":"AaveWrapping","nodeType":"ContractDefinition","nodes":[{"id":9334,"libraryName":{"id":9332,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":6337,"src":"1295:7:67","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$6337","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1289:34:67","typeName":{"id":9333,"name":"address","nodeType":"ElementaryTypeName","src":"1307:15:67","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"body":{"id":9423,"nodeType":"Block","src":"1556:1033:67","statements":[{"condition":{"arguments":[{"id":9350,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9342,"src":"1590:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9349,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"1570:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":9351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1570:27:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9359,"nodeType":"IfStatement","src":"1566:100:67","trueBody":{"id":9358,"nodeType":"Block","src":"1599:67:67","statements":[{"expression":{"id":9356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9352,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9342,"src":"1613:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9354,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9342,"src":"1648:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9353,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"1622:25:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":9355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1622:33:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1613:42:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9357,"nodeType":"ExpressionStatement","src":"1613:42:67"}]}},{"assignments":[9361],"declarations":[{"constant":false,"id":9361,"mutability":"mutable","name":"dynamicToken","nodeType":"VariableDeclaration","scope":9423,"src":"1848:19:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":9360,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1848:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"id":9370,"initialValue":{"condition":{"id":9362,"name":"fromUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9344,"src":"1870:14:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9366,"name":"staticToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9336,"src":"1909:11:67","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2584","typeString":"contract IStaticATokenLM"}},"id":9367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ATOKEN","nodeType":"MemberAccess","referencedDeclaration":2573,"src":"1909:18:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_contract$_IERC20_$1964_$","typeString":"function () external returns (contract IERC20)"}},"id":9368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1909:20:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":9369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1870:59:67","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9363,"name":"staticToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9336,"src":"1887:11:67","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2584","typeString":"contract IStaticATokenLM"}},"id":9364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ASSET","nodeType":"MemberAccess","referencedDeclaration":2578,"src":"1887:17:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_contract$_IERC20_$1964_$","typeString":"function () external returns (contract IERC20)"}},"id":9365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1887:19:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1848:81:67"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9371,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9338,"src":"2119:6:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":9374,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2137:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_AaveWrapping_$9493","typeString":"contract AaveWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AaveWrapping_$9493","typeString":"contract AaveWrapping"}],"id":9373,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2129:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9372,"name":"address","nodeType":"ElementaryTypeName","src":"2129:7:67","typeDescriptions":{}}},"id":9375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2129:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2119:23:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9392,"nodeType":"IfStatement","src":"2115:157:67","trueBody":{"id":9391,"nodeType":"Block","src":"2144:128:67","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9378,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9338,"src":"2166:6:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9379,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2176:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2176:10:67","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2166:20:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":9382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2188:18:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":9377,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2158:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2158:49:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9384,"nodeType":"ExpressionStatement","src":"2158:49:67"},{"expression":{"arguments":[{"id":9386,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9338,"src":"2232:6:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9387,"name":"dynamicToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9361,"src":"2240:12:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},{"id":9388,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9342,"src":"2254:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9385,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10537,"src":"2221:10:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$1964_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":9389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2221:40:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9390,"nodeType":"ExpressionStatement","src":"2221:40:67"}]}},{"expression":{"arguments":[{"arguments":[{"id":9398,"name":"staticToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9336,"src":"2311:11:67","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2584","typeString":"contract IStaticATokenLM"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStaticATokenLM_$2584","typeString":"contract IStaticATokenLM"}],"id":9397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2303:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9396,"name":"address","nodeType":"ElementaryTypeName","src":"2303:7:67","typeDescriptions":{}}},"id":9399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2303:20:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9400,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9342,"src":"2325:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9393,"name":"dynamicToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9361,"src":"2282:12:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":9395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":1933,"src":"2282:20:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":9401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2282:50:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9402,"nodeType":"ExpressionStatement","src":"2282:50:67"},{"assignments":[9404],"declarations":[{"constant":false,"id":9404,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":9423,"src":"2381:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9403,"name":"uint256","nodeType":"ElementaryTypeName","src":"2381:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9412,"initialValue":{"arguments":[{"id":9407,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9340,"src":"2418:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9408,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9342,"src":"2429:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":9409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2437:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":9410,"name":"fromUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9344,"src":"2440:14:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9405,"name":"staticToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9336,"src":"2398:11:67","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2584","typeString":"contract IStaticATokenLM"}},"id":9406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":2364,"src":"2398:19:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint16_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,uint256,uint16,bool) external returns (uint256)"}},"id":9411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2398:57:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2381:74:67"},{"condition":{"arguments":[{"id":9414,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9346,"src":"2490:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9413,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"2470:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":9415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2470:36:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9422,"nodeType":"IfStatement","src":"2466:117:67","trueBody":{"id":9421,"nodeType":"Block","src":"2508:75:67","statements":[{"expression":{"arguments":[{"id":9417,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9346,"src":"2548:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9418,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9404,"src":"2565:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9416,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"2522:25:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":9419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2522:50:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9420,"nodeType":"ExpressionStatement","src":"2522:50:67"}]}}]},"functionSelector":"433b0865","id":9424,"implemented":true,"kind":"function","modifiers":[],"name":"wrapAaveDynamicToken","nodeType":"FunctionDefinition","parameters":{"id":9347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9336,"mutability":"mutable","name":"staticToken","nodeType":"VariableDeclaration","scope":9424,"src":"1368:27:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2584","typeString":"contract IStaticATokenLM"},"typeName":{"id":9335,"name":"IStaticATokenLM","nodeType":"UserDefinedTypeName","referencedDeclaration":2584,"src":"1368:15:67","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2584","typeString":"contract IStaticATokenLM"}},"visibility":"internal"},{"constant":false,"id":9338,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":9424,"src":"1405:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9337,"name":"address","nodeType":"ElementaryTypeName","src":"1405:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9340,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":9424,"src":"1429:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9339,"name":"address","nodeType":"ElementaryTypeName","src":"1429:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9342,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":9424,"src":"1456:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9341,"name":"uint256","nodeType":"ElementaryTypeName","src":"1456:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9344,"mutability":"mutable","name":"fromUnderlying","nodeType":"VariableDeclaration","scope":9424,"src":"1480:19:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9343,"name":"bool","nodeType":"ElementaryTypeName","src":"1480:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9346,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":9424,"src":"1509:23:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9345,"name":"uint256","nodeType":"ElementaryTypeName","src":"1509:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1358:180:67"},"returnParameters":{"id":9348,"nodeType":"ParameterList","parameters":[],"src":"1556:0:67"},"scope":9493,"src":"1329:1260:67","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":9491,"nodeType":"Block","src":"2821:778:67","statements":[{"condition":{"arguments":[{"id":9440,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9432,"src":"2855:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9439,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"2835:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":9441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2835:27:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9449,"nodeType":"IfStatement","src":"2831:100:67","trueBody":{"id":9448,"nodeType":"Block","src":"2864:67:67","statements":[{"expression":{"id":9446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9442,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9432,"src":"2878:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9444,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9432,"src":"2913:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9443,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"2887:25:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":9445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2887:33:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2878:42:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9447,"nodeType":"ExpressionStatement","src":"2878:42:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9450,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9428,"src":"3122:6:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":9453,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3140:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_AaveWrapping_$9493","typeString":"contract AaveWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AaveWrapping_$9493","typeString":"contract AaveWrapping"}],"id":9452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3132:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9451,"name":"address","nodeType":"ElementaryTypeName","src":"3132:7:67","typeDescriptions":{}}},"id":9454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3132:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3122:23:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9471,"nodeType":"IfStatement","src":"3118:156:67","trueBody":{"id":9470,"nodeType":"Block","src":"3147:127:67","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9457,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9428,"src":"3169:6:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9458,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3179:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3179:10:67","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3169:20:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":9461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3191:18:67","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":9456,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3161:7:67","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3161:49:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9463,"nodeType":"ExpressionStatement","src":"3161:49:67"},{"expression":{"arguments":[{"id":9465,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9428,"src":"3235:6:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9466,"name":"staticToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9426,"src":"3243:11:67","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2584","typeString":"contract IStaticATokenLM"}},{"id":9467,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9432,"src":"3256:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IStaticATokenLM_$2584","typeString":"contract IStaticATokenLM"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9464,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10537,"src":"3224:10:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$1964_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":9468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3224:39:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9469,"nodeType":"ExpressionStatement","src":"3224:39:67"}]}},{"assignments":[null,9473],"declarations":[null,{"constant":false,"id":9473,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":9491,"src":"3394:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9472,"name":"uint256","nodeType":"ElementaryTypeName","src":"3394:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9480,"initialValue":{"arguments":[{"id":9476,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9430,"src":"3433:9:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9477,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9432,"src":"3444:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9478,"name":"toUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9434,"src":"3452:12:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9474,"name":"staticToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9426,"src":"3412:11:67","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2584","typeString":"contract IStaticATokenLM"}},"id":9475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":2378,"src":"3412:20:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256,bool) external returns (uint256,uint256)"}},"id":9479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3412:53:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3391:74:67"},{"condition":{"arguments":[{"id":9482,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9436,"src":"3500:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9481,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"3480:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":9483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3480:36:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9490,"nodeType":"IfStatement","src":"3476:117:67","trueBody":{"id":9489,"nodeType":"Block","src":"3518:75:67","statements":[{"expression":{"arguments":[{"id":9485,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9436,"src":"3558:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9486,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9473,"src":"3575:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9484,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"3532:25:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":9487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3532:50:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9488,"nodeType":"ExpressionStatement","src":"3532:50:67"}]}}]},"functionSelector":"7ab6e03c","id":9492,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapAaveStaticToken","nodeType":"FunctionDefinition","parameters":{"id":9437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9426,"mutability":"mutable","name":"staticToken","nodeType":"VariableDeclaration","scope":9492,"src":"2635:27:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2584","typeString":"contract IStaticATokenLM"},"typeName":{"id":9425,"name":"IStaticATokenLM","nodeType":"UserDefinedTypeName","referencedDeclaration":2584,"src":"2635:15:67","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2584","typeString":"contract IStaticATokenLM"}},"visibility":"internal"},{"constant":false,"id":9428,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":9492,"src":"2672:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9427,"name":"address","nodeType":"ElementaryTypeName","src":"2672:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9430,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":9492,"src":"2696:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9429,"name":"address","nodeType":"ElementaryTypeName","src":"2696:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9432,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":9492,"src":"2723:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9431,"name":"uint256","nodeType":"ElementaryTypeName","src":"2723:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9434,"mutability":"mutable","name":"toUnderlying","nodeType":"VariableDeclaration","scope":9492,"src":"2747:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9433,"name":"bool","nodeType":"ElementaryTypeName","src":"2747:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9436,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":9492,"src":"2774:23:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9435,"name":"uint256","nodeType":"ElementaryTypeName","src":"2774:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2625:178:67"},"returnParameters":{"id":9438,"nodeType":"ParameterList","parameters":[],"src":"2821:0:67"},"scope":9493,"src":"2595:1004:67","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":9494,"src":"1229:2372:67"}],"src":"688:2914:67"},"id":67},"contracts/relayer/BalancerRelayer.sol":{"ast":{"absolutePath":"contracts/relayer/BalancerRelayer.sol","exportedSymbols":{"BalancerRelayer":[9640]},"id":9641,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9495,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:68"},{"id":9496,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:68"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol","id":9497,"nodeType":"ImportDirective","scope":9641,"sourceUnit":2170,"src":"747:86:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":9498,"nodeType":"ImportDirective","scope":9641,"sourceUnit":7595,"src":"835:85:68","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":9499,"nodeType":"ImportDirective","scope":9641,"sourceUnit":6338,"src":"921:77:68","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9501,"name":"IBalancerRelayer","nodeType":"UserDefinedTypeName","referencedDeclaration":2169,"src":"2422:16:68","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$2169","typeString":"contract IBalancerRelayer"}},"id":9502,"nodeType":"InheritanceSpecifier","src":"2422:16:68"},{"baseName":{"id":9503,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":7594,"src":"2440:15:68","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$7594","typeString":"contract ReentrancyGuard"}},"id":9504,"nodeType":"InheritanceSpecifier","src":"2440:15:68"}],"contractDependencies":[2169,7594],"contractKind":"contract","documentation":{"id":9500,"nodeType":"StructuredDocumentation","src":"1000:1393:68","text":" @title Balancer Relayer\n @notice Allows safe multicall execution of a relayer's functions\n @dev\n Relayers are composed of two contracts:\n - This contract, which acts as a single point of entry into the system through a multicall function.\n - A library contract, which defines the allowed behaviour of the relayer.\n The relayer entrypoint can then repeatedly delegatecall into the library's code to perform actions.\n We can then run combinations of the library contract's functions in the context of the relayer entrypoint,\n without having to expose all these functions on the entrypoint contract itself. The multicall function is\n then a single point of entry for all actions, so we can easily prevent reentrancy.\n This design gives much stronger reentrancy guarantees, as otherwise a malicious contract could reenter\n the relayer through another function (which must allow reentrancy for multicall logic), and that would\n potentially allow them to manipulate global state, resulting in loss of funds in some cases:\n e.g., sweeping any leftover ETH that should have been refunded to the user.\n NOTE: Only the entrypoint contract should be allowlisted by Balancer governance as a relayer, so that the\n Vault will reject calls from outside the context of the entrypoint: e.g., if a user mistakenly called directly\n into the library contract."},"fullyImplemented":true,"id":9640,"linearizedBaseContracts":[9640,7594,2169],"name":"BalancerRelayer","nodeType":"ContractDefinition","nodes":[{"id":9507,"libraryName":{"id":9505,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":6337,"src":"2468:7:68","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$6337","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"2462:34:68","typeName":{"id":9506,"name":"address","nodeType":"ElementaryTypeName","src":"2480:15:68","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"id":9510,"libraryName":{"id":9508,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":6337,"src":"2507:7:68","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$6337","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"2501:26:68","typeName":{"id":9509,"name":"address","nodeType":"ElementaryTypeName","src":"2519:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":false,"id":9512,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":9640,"src":"2533:31:68","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":9511,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"2533:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"private"},{"constant":false,"id":9514,"mutability":"immutable","name":"_library","nodeType":"VariableDeclaration","scope":9640,"src":"2570:34:68","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9513,"name":"address","nodeType":"ElementaryTypeName","src":"2570:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":9530,"nodeType":"Block","src":"2899:66:68","statements":[{"expression":{"id":9524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9522,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9512,"src":"2909:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9523,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9517,"src":"2918:5:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"src":"2909:14:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":9525,"nodeType":"ExpressionStatement","src":"2909:14:68"},{"expression":{"id":9528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9526,"name":"_library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9514,"src":"2933:8:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9527,"name":"libraryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9519,"src":"2944:14:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2933:25:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9529,"nodeType":"ExpressionStatement","src":"2933:25:68"}]},"documentation":{"id":9515,"nodeType":"StructuredDocumentation","src":"2611:233:68","text":" @dev This contract is not meant to be deployed directly by an EOA, but rather during construction of a contract\n derived from `BaseRelayerLibrary`, which will provide its own address as the relayer's library."},"id":9531,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9517,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":9531,"src":"2861:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":9516,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"2861:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":9519,"mutability":"mutable","name":"libraryAddress","nodeType":"VariableDeclaration","scope":9531,"src":"2875:22:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9518,"name":"address","nodeType":"ElementaryTypeName","src":"2875:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2860:38:68"},"returnParameters":{"id":9521,"nodeType":"ParameterList","parameters":[],"src":"2899:0:68"},"scope":9640,"src":"2849:116:68","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9546,"nodeType":"Block","src":"2998:520:68","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9535,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3460:3:68","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3460:10:68","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":9539,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9512,"src":"3482:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}],"id":9538,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3474:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9537,"name":"address","nodeType":"ElementaryTypeName","src":"3474:7:68","typeDescriptions":{}}},"id":9540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3474:15:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3460:29:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":9542,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"3491:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":9543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ETH_TRANSFER","nodeType":"MemberAccess","referencedDeclaration":1694,"src":"3491:19:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9534,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"3451:8:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":9544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3451:60:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9545,"nodeType":"ExpressionStatement","src":"3451:60:68"}]},"id":9547,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9532,"nodeType":"ParameterList","parameters":[],"src":"2978:2:68"},"returnParameters":{"id":9533,"nodeType":"ParameterList","parameters":[],"src":"2998:0:68"},"scope":9640,"src":"2971:547:68","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[2159],"body":{"id":9555,"nodeType":"Block","src":"3584:30:68","statements":[{"expression":{"id":9553,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9512,"src":"3601:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"functionReturnParameters":9552,"id":9554,"nodeType":"Return","src":"3594:13:68"}]},"functionSelector":"8d928af8","id":9556,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","overrides":{"id":9549,"nodeType":"OverrideSpecifier","overrides":[],"src":"3558:8:68"},"parameters":{"id":9548,"nodeType":"ParameterList","parameters":[],"src":"3541:2:68"},"returnParameters":{"id":9552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9551,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9556,"src":"3576:6:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":9550,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"3576:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"}],"src":"3575:8:68"},"scope":9640,"src":"3524:90:68","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2154],"body":{"id":9564,"nodeType":"Block","src":"3683:32:68","statements":[{"expression":{"id":9562,"name":"_library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9514,"src":"3700:8:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":9561,"id":9563,"nodeType":"Return","src":"3693:15:68"}]},"functionSelector":"7678922e","id":9565,"implemented":true,"kind":"function","modifiers":[],"name":"getLibrary","nodeType":"FunctionDefinition","overrides":{"id":9558,"nodeType":"OverrideSpecifier","overrides":[],"src":"3656:8:68"},"parameters":{"id":9557,"nodeType":"ParameterList","parameters":[],"src":"3639:2:68"},"returnParameters":{"id":9561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9560,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9565,"src":"3674:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9559,"name":"address","nodeType":"ElementaryTypeName","src":"3674:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3673:9:68"},"scope":9640,"src":"3620:95:68","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2168],"body":{"id":9613,"nodeType":"Block","src":"3835:201:68","statements":[{"expression":{"id":9584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9577,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9575,"src":"3845:7:68","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":9581,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9568,"src":"3867:4:68","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":9582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3867:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9580,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3855:11:68","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory[] memory)"},"typeName":{"baseType":{"id":9578,"name":"bytes","nodeType":"ElementaryTypeName","src":"3859:5:68","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":9579,"nodeType":"ArrayTypeName","src":"3859:7:68","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}}},"id":9583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3855:24:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"src":"3845:34:68","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":9585,"nodeType":"ExpressionStatement","src":"3845:34:68"},{"body":{"id":9608,"nodeType":"Block","src":"3931:76:68","statements":[{"expression":{"id":9606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9597,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9575,"src":"3945:7:68","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":9599,"indexExpression":{"id":9598,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9587,"src":"3953:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3945:10:68","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":9602,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9568,"src":"3988:4:68","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":9604,"indexExpression":{"id":9603,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9587,"src":"3993:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3988:7:68","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":9600,"name":"_library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9514,"src":"3958:8:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":6306,"src":"3958:29:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":9605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3958:38:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"3945:51:68","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9607,"nodeType":"ExpressionStatement","src":"3945:51:68"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9590,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9587,"src":"3909:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9591,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9568,"src":"3913:4:68","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":9592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3913:11:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3909:15:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9609,"initializationExpression":{"assignments":[9587],"declarations":[{"constant":false,"id":9587,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":9609,"src":"3894:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9586,"name":"uint256","nodeType":"ElementaryTypeName","src":"3894:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9589,"initialValue":{"hexValue":"30","id":9588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3906:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3894:13:68"},"loopExpression":{"expression":{"id":9595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3926:3:68","subExpression":{"id":9594,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9587,"src":"3926:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9596,"nodeType":"ExpressionStatement","src":"3926:3:68"},"nodeType":"ForStatement","src":"3889:118:68"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9610,"name":"_refundETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9639,"src":"4017:10:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4017:12:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9612,"nodeType":"ExpressionStatement","src":"4017:12:68"}]},"functionSelector":"ac9650d8","id":9614,"implemented":true,"kind":"function","modifiers":[{"id":9572,"modifierName":{"id":9571,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7569,"src":"3789:12:68","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3789:12:68"}],"name":"multicall","nodeType":"FunctionDefinition","overrides":{"id":9570,"nodeType":"OverrideSpecifier","overrides":[],"src":"3780:8:68"},"parameters":{"id":9569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9568,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":9614,"src":"3740:21:68","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":9566,"name":"bytes","nodeType":"ElementaryTypeName","src":"3740:5:68","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":9567,"nodeType":"ArrayTypeName","src":"3740:7:68","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"3739:23:68"},"returnParameters":{"id":9576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9575,"mutability":"mutable","name":"results","nodeType":"VariableDeclaration","scope":9614,"src":"3811:22:68","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":9573,"name":"bytes","nodeType":"ElementaryTypeName","src":"3811:5:68","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":9574,"nodeType":"ArrayTypeName","src":"3811:7:68","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"3810:24:68"},"scope":9640,"src":"3721:315:68","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":9638,"nodeType":"Block","src":"4072:151:68","statements":[{"assignments":[9618],"declarations":[{"constant":false,"id":9618,"mutability":"mutable","name":"remainingEth","nodeType":"VariableDeclaration","scope":9638,"src":"4082:20:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9617,"name":"uint256","nodeType":"ElementaryTypeName","src":"4082:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9624,"initialValue":{"expression":{"arguments":[{"id":9621,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4113:4:68","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerRelayer_$9640","typeString":"contract BalancerRelayer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerRelayer_$9640","typeString":"contract BalancerRelayer"}],"id":9620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4105:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9619,"name":"address","nodeType":"ElementaryTypeName","src":"4105:7:68","typeDescriptions":{}}},"id":9622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4105:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":9623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"4105:21:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4082:44:68"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9625,"name":"remainingEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9618,"src":"4140:12:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4155:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4140:16:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9637,"nodeType":"IfStatement","src":"4136:81:68","trueBody":{"id":9636,"nodeType":"Block","src":"4158:59:68","statements":[{"expression":{"arguments":[{"id":9633,"name":"remainingEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9618,"src":"4193:12:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":9628,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4172:3:68","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4172:10:68","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":9632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendValue","nodeType":"MemberAccess","referencedDeclaration":6227,"src":"4172:20:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$bound_to$_t_address_payable_$","typeString":"function (address payable,uint256)"}},"id":9634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4172:34:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9635,"nodeType":"ExpressionStatement","src":"4172:34:68"}]}}]},"id":9639,"implemented":true,"kind":"function","modifiers":[],"name":"_refundETH","nodeType":"FunctionDefinition","parameters":{"id":9615,"nodeType":"ParameterList","parameters":[],"src":"4061:2:68"},"returnParameters":{"id":9616,"nodeType":"ParameterList","parameters":[],"src":"4072:0:68"},"scope":9640,"src":"4042:181:68","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":9641,"src":"2394:1831:68"}],"src":"688:3538:68"},"id":68},"contracts/relayer/BaseRelayerLibrary.sol":{"ast":{"absolutePath":"contracts/relayer/BaseRelayerLibrary.sol","exportedSymbols":{"BaseRelayerLibrary":[10066]},"id":10067,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9642,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:69"},{"id":9643,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:69"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol","id":9644,"nodeType":"ImportDirective","scope":10067,"sourceUnit":2170,"src":"747:86:69","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":9645,"nodeType":"ImportDirective","scope":10067,"sourceUnit":3372,"src":"834:65:69","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":9646,"nodeType":"ImportDirective","scope":10067,"sourceUnit":10571,"src":"901:35:69","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/BalancerRelayer.sol","file":"./BalancerRelayer.sol","id":9647,"nodeType":"ImportDirective","scope":10067,"sourceUnit":9641,"src":"937:31:69","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9649,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":10570,"src":"1816:19:69","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$10570","typeString":"contract IBaseRelayerLibrary"}},"id":9650,"nodeType":"InheritanceSpecifier","src":"1816:19:69"}],"contractDependencies":[8042,9640,10570],"contractKind":"contract","documentation":{"id":9648,"nodeType":"StructuredDocumentation","src":"970:814:69","text":" @title Base Relayer Library\n @notice Core functionality of a relayer. Allow users to use a signature to approve this contract\n to take further actions on their behalf.\n @dev\n Relayers are composed of two contracts:\n - A `BalancerRelayer` contract, which acts as a single point of entry into the system through a multicall function\n - A library contract such as this one, which defines the allowed behaviour of the relayer\n NOTE: Only the entrypoint contract should be allowlisted by Balancer governance as a relayer, so that the Vault\n will reject calls from outside the entrypoint context.\n This contract should neither be allowlisted as a relayer, nor called directly by the user.\n No guarantees can be made about fund safety when calling this contract in an improper manner."},"fullyImplemented":true,"id":10066,"linearizedBaseContracts":[10066,10570,8042],"name":"BaseRelayerLibrary","nodeType":"ContractDefinition","nodes":[{"id":9653,"libraryName":{"id":9651,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":6337,"src":"1848:7:69","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$6337","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1842:26:69","typeName":{"id":9652,"name":"address","nodeType":"ElementaryTypeName","src":"1860:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":false,"id":9655,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":10066,"src":"1874:31:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":9654,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"1874:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"private"},{"constant":false,"id":9657,"mutability":"immutable","name":"_entrypoint","nodeType":"VariableDeclaration","scope":10066,"src":"1911:46:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$2169","typeString":"contract IBalancerRelayer"},"typeName":{"id":9656,"name":"IBalancerRelayer","nodeType":"UserDefinedTypeName","referencedDeclaration":2169,"src":"1911:16:69","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$2169","typeString":"contract IBalancerRelayer"}},"visibility":"private"},{"body":{"id":9682,"nodeType":"Block","src":"2024:96:69","statements":[{"expression":{"id":9669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9667,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9655,"src":"2034:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9668,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9659,"src":"2043:5:69","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"src":"2034:14:69","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":9670,"nodeType":"ExpressionStatement","src":"2034:14:69"},{"expression":{"id":9680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9671,"name":"_entrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9657,"src":"2058:11:69","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$2169","typeString":"contract IBalancerRelayer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9674,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9659,"src":"2092:5:69","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},{"arguments":[{"id":9677,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2107:4:69","typeDescriptions":{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$10066","typeString":"contract BaseRelayerLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$10066","typeString":"contract BaseRelayerLibrary"}],"id":9676,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2099:7:69","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9675,"name":"address","nodeType":"ElementaryTypeName","src":"2099:7:69","typeDescriptions":{}}},"id":9678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2099:13:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2072:19:69","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IVault_$3371_$_t_address_$returns$_t_contract$_BalancerRelayer_$9640_$","typeString":"function (contract IVault,address) returns (contract BalancerRelayer)"},"typeName":{"id":9672,"name":"BalancerRelayer","nodeType":"UserDefinedTypeName","referencedDeclaration":9640,"src":"2076:15:69","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerRelayer_$9640","typeString":"contract BalancerRelayer"}}},"id":9679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2072:41:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BalancerRelayer_$9640","typeString":"contract BalancerRelayer"}},"src":"2058:55:69","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$2169","typeString":"contract IBalancerRelayer"}},"id":9681,"nodeType":"ExpressionStatement","src":"2058:55:69"}]},"id":9683,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9662,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9659,"src":"2010:5:69","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":9663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"WETH","nodeType":"MemberAccess","referencedDeclaration":3370,"src":"2010:10:69","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IWETH_$1886_$","typeString":"function () view external returns (contract IWETH)"}},"id":9664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2010:12:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1886","typeString":"contract IWETH"}}],"id":9665,"modifierName":{"id":9661,"name":"IBaseRelayerLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10570,"src":"1990:19:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaseRelayerLibrary_$10570_$","typeString":"type(contract IBaseRelayerLibrary)"}},"nodeType":"ModifierInvocation","src":"1990:33:69"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9659,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":9683,"src":"1976:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":9658,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"1976:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1975:14:69"},"returnParameters":{"id":9666,"nodeType":"ParameterList","parameters":[],"src":"2024:0:69"},"scope":10066,"src":"1964:156:69","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[10514],"body":{"id":9691,"nodeType":"Block","src":"2184:30:69","statements":[{"expression":{"id":9689,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9655,"src":"2201:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"functionReturnParameters":9688,"id":9690,"nodeType":"Return","src":"2194:13:69"}]},"functionSelector":"8d928af8","id":9692,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","overrides":{"id":9685,"nodeType":"OverrideSpecifier","overrides":[],"src":"2158:8:69"},"parameters":{"id":9684,"nodeType":"ParameterList","parameters":[],"src":"2143:2:69"},"returnParameters":{"id":9688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9687,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9692,"src":"2176:6:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":9686,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"2176:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"}],"src":"2175:8:69"},"scope":10066,"src":"2126:88:69","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":9699,"nodeType":"Block","src":"2284:35:69","statements":[{"expression":{"id":9697,"name":"_entrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9657,"src":"2301:11:69","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$2169","typeString":"contract IBalancerRelayer"}},"functionReturnParameters":9696,"id":9698,"nodeType":"Return","src":"2294:18:69"}]},"functionSelector":"7fd0e5d5","id":9700,"implemented":true,"kind":"function","modifiers":[],"name":"getEntrypoint","nodeType":"FunctionDefinition","parameters":{"id":9693,"nodeType":"ParameterList","parameters":[],"src":"2242:2:69"},"returnParameters":{"id":9696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9695,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9700,"src":"2266:16:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$2169","typeString":"contract IBalancerRelayer"},"typeName":{"id":9694,"name":"IBalancerRelayer","nodeType":"UserDefinedTypeName","referencedDeclaration":2169,"src":"2266:16:69","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$2169","typeString":"contract IBalancerRelayer"}},"visibility":"internal"}],"src":"2265:18:69"},"scope":10066,"src":"2220:99:69","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":9748,"nodeType":"Block","src":"2570:329:69","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9711,"name":"relayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9703,"src":"2588:7:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":9714,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2607:4:69","typeDescriptions":{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$10066","typeString":"contract BaseRelayerLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$10066","typeString":"contract BaseRelayerLibrary"}],"id":9713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2599:7:69","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9712,"name":"address","nodeType":"ElementaryTypeName","src":"2599:7:69","typeDescriptions":{}}},"id":9715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2599:13:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2588:24:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":9718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2616:9:69","subExpression":{"id":9717,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9705,"src":"2617:8:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2588:37:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"52656c617965722063616e206f6e6c7920617070726f766520697473656c66","id":9720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2627:33:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_6a269b127bbbb8d8feb92de028769dfc0cdb5d672ea3074589e3c1804666d377","typeString":"literal_string \"Relayer can only approve itself\""},"value":"Relayer can only approve itself"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6a269b127bbbb8d8feb92de028769dfc0cdb5d672ea3074589e3c1804666d377","typeString":"literal_string \"Relayer can only approve itself\""}],"id":9710,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2580:7:69","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2580:81:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9722,"nodeType":"ExpressionStatement","src":"2580:81:69"},{"assignments":[9724],"declarations":[{"constant":false,"id":9724,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":9748,"src":"2671:17:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9723,"name":"bytes","nodeType":"ElementaryTypeName","src":"2671:5:69","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9739,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":9729,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9655,"src":"2744:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":9730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setRelayerApproval","nodeType":"MemberAccess","referencedDeclaration":2962,"src":"2744:25:69","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool) external"}},"id":9731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"2744:34:69","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":9732,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2780:3:69","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2780:10:69","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":9734,"name":"relayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9703,"src":"2792:7:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9735,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9705,"src":"2801:8:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9727,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2721:3:69","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9728,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2721:22:69","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":9736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2721:89:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9737,"name":"authorisation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9707,"src":"2824:13:69","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":9725,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2691:3:69","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9726,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2691:16:69","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":9738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2691:156:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2671:176:69"},{"expression":{"arguments":[{"id":9745,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9724,"src":"2887:4:69","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":9742,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9655,"src":"2866:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}],"id":9741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2858:7:69","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9740,"name":"address","nodeType":"ElementaryTypeName","src":"2858:7:69","typeDescriptions":{}}},"id":9743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2858:15:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":6252,"src":"2858:28:69","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":9746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2858:34:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9747,"nodeType":"ExpressionStatement","src":"2858:34:69"}]},"documentation":{"id":9701,"nodeType":"StructuredDocumentation","src":"2325:103:69","text":" @notice Sets whether a particular relayer is authorised to act on behalf of the user"},"functionSelector":"80db15bd","id":9749,"implemented":true,"kind":"function","modifiers":[],"name":"setRelayerApproval","nodeType":"FunctionDefinition","parameters":{"id":9708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9703,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":9749,"src":"2470:15:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9702,"name":"address","nodeType":"ElementaryTypeName","src":"2470:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9705,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":9749,"src":"2495:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9704,"name":"bool","nodeType":"ElementaryTypeName","src":"2495:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9707,"mutability":"mutable","name":"authorisation","nodeType":"VariableDeclaration","scope":9749,"src":"2518:28:69","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":9706,"name":"bytes","nodeType":"ElementaryTypeName","src":"2518:5:69","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2460:92:69"},"returnParameters":{"id":9709,"nodeType":"ParameterList","parameters":[],"src":"2570:0:69"},"scope":10066,"src":"2433:466:69","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[10521],"body":{"id":9780,"nodeType":"Block","src":"3145:205:69","statements":[{"condition":{"arguments":[{"id":9759,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9754,"src":"3179:6:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9758,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[9943],"referencedDeclaration":9943,"src":"3159:19:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":9760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3159:27:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9768,"nodeType":"IfStatement","src":"3155:100:69","trueBody":{"id":9767,"nodeType":"Block","src":"3188:67:69","statements":[{"expression":{"id":9765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9761,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9754,"src":"3202:6:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9763,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9754,"src":"3237:6:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9762,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[10002],"referencedDeclaration":10002,"src":"3211:25:69","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":9764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3211:33:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3202:42:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9766,"nodeType":"ExpressionStatement","src":"3202:42:69"}]}},{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":9774,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[9692],"referencedDeclaration":9692,"src":"3323:8:69","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3371_$","typeString":"function () view returns (contract IVault)"}},"id":9775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3323:10:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}],"id":9773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3315:7:69","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9772,"name":"address","nodeType":"ElementaryTypeName","src":"3315:7:69","typeDescriptions":{}}},"id":9776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3315:19:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9777,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9754,"src":"3336:6:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9769,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9752,"src":"3301:5:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":9771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":1933,"src":"3301:13:69","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":9778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3301:42:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9779,"nodeType":"ExpressionStatement","src":"3301:42:69"}]},"documentation":{"id":9750,"nodeType":"StructuredDocumentation","src":"2905:167:69","text":" @notice Approves the Vault to use tokens held in the relayer\n @dev This is needed to avoid having to send intermediate tokens back to the user"},"functionSelector":"b6d24737","id":9781,"implemented":true,"kind":"function","modifiers":[],"name":"approveVault","nodeType":"FunctionDefinition","overrides":{"id":9756,"nodeType":"OverrideSpecifier","overrides":[],"src":"3136:8:69"},"parameters":{"id":9755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9752,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":9781,"src":"3099:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":9751,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"3099:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9754,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":9781,"src":"3113:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9753,"name":"uint256","nodeType":"ElementaryTypeName","src":"3113:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3098:30:69"},"returnParameters":{"id":9757,"nodeType":"ParameterList","parameters":[],"src":"3145:0:69"},"scope":10066,"src":"3077:273:69","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[10528],"body":{"id":9797,"nodeType":"Block","src":"3618:60:69","statements":[{"expression":{"id":9795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":9790,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9788,"src":"3631:5:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9791,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3628:9:69","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$","typeString":"tuple(,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9793,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9784,"src":"3667:3:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9792,"name":"_peekChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10020,"src":"3640:26:69","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bytes32_$_t_uint256_$","typeString":"function (uint256) view returns (bytes32,uint256)"}},"id":9794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3640:31:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"src":"3628:43:69","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9796,"nodeType":"ExpressionStatement","src":"3628:43:69"}]},"documentation":{"id":9782,"nodeType":"StructuredDocumentation","src":"3356:164:69","text":" @notice Returns the amount referenced by chained reference `ref`.\n @dev It does not alter the reference (even if it's marked as temporary)."},"functionSelector":"f3cab685","id":9798,"implemented":true,"kind":"function","modifiers":[],"name":"peekChainedReferenceValue","nodeType":"FunctionDefinition","overrides":{"id":9786,"nodeType":"OverrideSpecifier","overrides":[],"src":"3585:8:69"},"parameters":{"id":9785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9784,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":9798,"src":"3560:11:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9783,"name":"uint256","nodeType":"ElementaryTypeName","src":"3560:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3559:13:69"},"returnParameters":{"id":9789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9788,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":9798,"src":"3603:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9787,"name":"uint256","nodeType":"ElementaryTypeName","src":"3603:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3602:15:69"},"scope":10066,"src":"3525:153:69","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[10537],"body":{"id":9852,"nodeType":"Block","src":"3798:246:69","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9808,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9804,"src":"3812:6:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3822:1:69","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3812:11:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9812,"nodeType":"IfStatement","src":"3808:24:69","trueBody":{"functionReturnParameters":9807,"id":9811,"nodeType":"Return","src":"3825:7:69"}},{"assignments":[9816],"declarations":[{"constant":false,"id":9816,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":9852,"src":"3841:22:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":9814,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"3841:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":9815,"nodeType":"ArrayTypeName","src":"3841:8:69","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":9822,"initialValue":{"arguments":[{"hexValue":"31","id":9820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3879:1:69","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":9819,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3866:12:69","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":9817,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"3870:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":9818,"nodeType":"ArrayTypeName","src":"3870:8:69","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":9821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3866:15:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3841:40:69"},{"expression":{"id":9827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9823,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"3891:6:69","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":9825,"indexExpression":{"hexValue":"30","id":9824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3898:1:69","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3891:9:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9826,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9802,"src":"3903:5:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"3891:17:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":9828,"nodeType":"ExpressionStatement","src":"3891:17:69"},{"assignments":[9833],"declarations":[{"constant":false,"id":9833,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":9852,"src":"3918:24:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9831,"name":"uint256","nodeType":"ElementaryTypeName","src":"3918:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9832,"nodeType":"ArrayTypeName","src":"3918:9:69","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":9839,"initialValue":{"arguments":[{"hexValue":"31","id":9837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3959:1:69","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":9836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3945:13:69","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":9834,"name":"uint256","nodeType":"ElementaryTypeName","src":"3949:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9835,"nodeType":"ArrayTypeName","src":"3949:9:69","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":9838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3945:16:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3918:43:69"},{"expression":{"id":9844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9840,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9833,"src":"3971:7:69","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9842,"indexExpression":{"hexValue":"30","id":9841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3979:1:69","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3971:10:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9843,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9804,"src":"3984:6:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3971:19:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9845,"nodeType":"ExpressionStatement","src":"3971:19:69"},{"expression":{"arguments":[{"id":9847,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9800,"src":"4013:6:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9848,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"4021:6:69","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":9849,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9833,"src":"4029:7:69","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":9846,"name":"_pullTokens","nodeType":"Identifier","overloadedDeclarations":[9926],"referencedDeclaration":9926,"src":"4001:11:69","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,contract IERC20[] memory,uint256[] memory)"}},"id":9850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4001:36:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9851,"nodeType":"ExpressionStatement","src":"4001:36:69"}]},"id":9853,"implemented":true,"kind":"function","modifiers":[],"name":"_pullToken","nodeType":"FunctionDefinition","overrides":{"id":9806,"nodeType":"OverrideSpecifier","overrides":[],"src":"3789:8:69"},"parameters":{"id":9805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9800,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":9853,"src":"3713:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9799,"name":"address","nodeType":"ElementaryTypeName","src":"3713:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9802,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":9853,"src":"3737:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":9801,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"3737:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9804,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":9853,"src":"3759:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9803,"name":"uint256","nodeType":"ElementaryTypeName","src":"3759:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3703:76:69"},"returnParameters":{"id":9807,"nodeType":"ParameterList","parameters":[],"src":"3798:0:69"},"scope":10066,"src":"3684:360:69","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[10548],"body":{"id":9925,"nodeType":"Block","src":"4185:493:69","statements":[{"assignments":[9869],"declarations":[{"constant":false,"id":9869,"mutability":"mutable","name":"ops","nodeType":"VariableDeclaration","scope":9925,"src":"4195:33:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3001_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp[]"},"typeName":{"baseType":{"id":9867,"name":"IVault.UserBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":3001,"src":"4195:20:69","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3001_storage_ptr","typeString":"struct IVault.UserBalanceOp"}},"id":9868,"nodeType":"ArrayTypeName","src":"4195:22:69","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3001_storage_$dyn_storage_ptr","typeString":"struct IVault.UserBalanceOp[]"}},"visibility":"internal"}],"id":9876,"initialValue":{"arguments":[{"expression":{"id":9873,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9858,"src":"4258:6:69","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":9874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4258:13:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9872,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4231:26:69","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_UserBalanceOp_$3001_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct IVault.UserBalanceOp memory[] memory)"},"typeName":{"baseType":{"id":9870,"name":"IVault.UserBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":3001,"src":"4235:20:69","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3001_storage_ptr","typeString":"struct IVault.UserBalanceOp"}},"id":9871,"nodeType":"ArrayTypeName","src":"4235:22:69","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3001_storage_$dyn_storage_ptr","typeString":"struct IVault.UserBalanceOp[]"}}},"id":9875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4231:41:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3001_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4195:77:69"},{"body":{"id":9917,"nodeType":"Block","src":"4322:306:69","statements":[{"expression":{"id":9915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9887,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9869,"src":"4336:3:69","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3001_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}},"id":9889,"indexExpression":{"id":9888,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9878,"src":"4340:1:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4336:6:69","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3001_memory_ptr","typeString":"struct IVault.UserBalanceOp memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"baseExpression":{"id":9895,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9858,"src":"4406:6:69","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":9897,"indexExpression":{"id":9896,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9878,"src":"4413:1:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4406:9:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}],"id":9894,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4398:7:69","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9893,"name":"address","nodeType":"ElementaryTypeName","src":"4398:7:69","typeDescriptions":{}}},"id":9898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4398:18:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9892,"name":"IAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2658,"src":"4391:6:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAsset_$2658_$","typeString":"type(contract IAsset)"}},"id":9899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4391:26:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},{"baseExpression":{"id":9900,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9861,"src":"4443:7:69","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9902,"indexExpression":{"id":9901,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9878,"src":"4451:1:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4443:10:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9903,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9855,"src":"4479:6:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":9908,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4530:4:69","typeDescriptions":{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$10066","typeString":"contract BaseRelayerLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$10066","typeString":"contract BaseRelayerLibrary"}],"id":9907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4522:7:69","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9906,"name":"address","nodeType":"ElementaryTypeName","src":"4522:7:69","typeDescriptions":{}}},"id":9909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4522:13:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9905,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4514:8:69","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":9904,"name":"address","nodeType":"ElementaryTypeName","src":"4514:8:69","stateMutability":"payable","typeDescriptions":{}}},"id":9910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4514:22:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"expression":{"id":9911,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"4560:6:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3371_$","typeString":"type(contract IVault)"}},"id":9912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UserBalanceOpKind","nodeType":"MemberAccess","referencedDeclaration":3006,"src":"4560:24:69","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_UserBalanceOpKind_$3006_$","typeString":"type(enum IVault.UserBalanceOpKind)"}},"id":9913,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TRANSFER_EXTERNAL","nodeType":"MemberAccess","src":"4560:42:69","typeDescriptions":{"typeIdentifier":"t_enum$_UserBalanceOpKind_$3006","typeString":"enum IVault.UserBalanceOpKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_enum$_UserBalanceOpKind_$3006","typeString":"enum IVault.UserBalanceOpKind"}],"expression":{"id":9890,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"4345:6:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3371_$","typeString":"type(contract IVault)"}},"id":9891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UserBalanceOp","nodeType":"MemberAccess","referencedDeclaration":3001,"src":"4345:20:69","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UserBalanceOp_$3001_storage_ptr_$","typeString":"type(struct IVault.UserBalanceOp storage pointer)"}},"id":9914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["asset","amount","sender","recipient","kind"],"nodeType":"FunctionCall","src":"4345:272:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3001_memory_ptr","typeString":"struct IVault.UserBalanceOp memory"}},"src":"4336:281:69","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3001_memory_ptr","typeString":"struct IVault.UserBalanceOp memory"}},"id":9916,"nodeType":"ExpressionStatement","src":"4336:281:69"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9880,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9878,"src":"4298:1:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9881,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9858,"src":"4302:6:69","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":9882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4302:13:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4298:17:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9918,"initializationExpression":{"assignments":[9878],"declarations":[{"constant":false,"id":9878,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":9918,"src":"4287:9:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9877,"name":"uint256","nodeType":"ElementaryTypeName","src":"4287:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9879,"nodeType":"VariableDeclarationStatement","src":"4287:9:69"},"loopExpression":{"expression":{"id":9885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4317:3:69","subExpression":{"id":9884,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9878,"src":"4317:1:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9886,"nodeType":"ExpressionStatement","src":"4317:3:69"},"nodeType":"ForStatement","src":"4282:346:69"},{"expression":{"arguments":[{"id":9922,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9869,"src":"4667:3:69","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3001_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3001_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9919,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[9692],"referencedDeclaration":9692,"src":"4638:8:69","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3371_$","typeString":"function () view returns (contract IVault)"}},"id":9920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4638:10:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":9921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"manageUserBalance","nodeType":"MemberAccess","referencedDeclaration":2990,"src":"4638:28:69","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_array$_t_struct$_UserBalanceOp_$3001_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (struct IVault.UserBalanceOp memory[] memory) payable external"}},"id":9923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4638:33:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9924,"nodeType":"ExpressionStatement","src":"4638:33:69"}]},"id":9926,"implemented":true,"kind":"function","modifiers":[],"name":"_pullTokens","nodeType":"FunctionDefinition","overrides":{"id":9863,"nodeType":"OverrideSpecifier","overrides":[],"src":"4176:8:69"},"parameters":{"id":9862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9855,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":9926,"src":"4080:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9854,"name":"address","nodeType":"ElementaryTypeName","src":"4080:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9858,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":9926,"src":"4104:22:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":9856,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"4104:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":9857,"nodeType":"ArrayTypeName","src":"4104:8:69","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":9861,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":9926,"src":"4136:24:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9859,"name":"uint256","nodeType":"ElementaryTypeName","src":"4136:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9860,"nodeType":"ArrayTypeName","src":"4136:9:69","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4070:96:69"},"returnParameters":{"id":9864,"nodeType":"ParameterList","parameters":[],"src":"4185:0:69"},"scope":10066,"src":"4050:628:69","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[10555],"body":{"id":9942,"nodeType":"Block","src":"4879:275:69","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9935,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9929,"src":"4989:6:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866666630303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":9936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4998:66:69","typeDescriptions":{"typeIdentifier":"t_rational_115763819684279741274297652248676021157016744923290554136127638308692447723520_by_1","typeString":"int_const 1157...(70 digits omitted)...3520"},"value":"0xfff0000000000000000000000000000000000000000000000000000000000000"},"src":"4989:75:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9938,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4988:77:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"307862613130303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":9939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5081:66:69","typeDescriptions":{"typeIdentifier":"t_rational_84158459389524002386711626555386694745894712975979482213248346579970065170432_by_1","typeString":"int_const 8415...(69 digits omitted)...0432"},"value":"0xba10000000000000000000000000000000000000000000000000000000000000"},"src":"4988:159:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9934,"id":9941,"nodeType":"Return","src":"4969:178:69"}]},"documentation":{"id":9927,"nodeType":"StructuredDocumentation","src":"4684:107:69","text":" @dev Returns true if `amount` is not actually an amount, but rather a chained reference."},"id":9943,"implemented":true,"kind":"function","modifiers":[],"name":"_isChainedReference","nodeType":"FunctionDefinition","overrides":{"id":9931,"nodeType":"OverrideSpecifier","overrides":[],"src":"4855:8:69"},"parameters":{"id":9930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9929,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":9943,"src":"4825:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9928,"name":"uint256","nodeType":"ElementaryTypeName","src":"4825:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4824:16:69"},"returnParameters":{"id":9934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9933,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9943,"src":"4873:4:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9932,"name":"bool","nodeType":"ElementaryTypeName","src":"4873:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4872:6:69"},"scope":10066,"src":"4796:358:69","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9958,"nodeType":"Block","src":"5354:422:69","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9951,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9946,"src":"5611:6:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866666666303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":9952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5620:66:69","typeDescriptions":{"typeIdentifier":"t_rational_115790322390251417039241401711187164934754157181743688420499462401711837020160_by_1","typeString":"int_const 1157...(70 digits omitted)...0160"},"value":"0xffff000000000000000000000000000000000000000000000000000000000000"},"src":"5611:75:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9954,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5610:77:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"307862613130303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":9955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5703:66:69","typeDescriptions":{"typeIdentifier":"t_rational_84158459389524002386711626555386694745894712975979482213248346579970065170432_by_1","typeString":"int_const 8415...(69 digits omitted)...0432"},"value":"0xba10000000000000000000000000000000000000000000000000000000000000"},"src":"5610:159:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9950,"id":9957,"nodeType":"Return","src":"5591:178:69"}]},"documentation":{"id":9944,"nodeType":"StructuredDocumentation","src":"5160:106:69","text":" @dev Returns true if `ref` is temporary reference, i.e. to be deleted after reading it."},"id":9959,"implemented":true,"kind":"function","modifiers":[],"name":"_isTemporaryChainedReference","nodeType":"FunctionDefinition","parameters":{"id":9947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9946,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":9959,"src":"5309:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9945,"name":"uint256","nodeType":"ElementaryTypeName","src":"5309:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5308:16:69"},"returnParameters":{"id":9950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9949,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9959,"src":"5348:4:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9948,"name":"bool","nodeType":"ElementaryTypeName","src":"5348:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5347:6:69"},"scope":10066,"src":"5271:505:69","stateMutability":"pure","virtual":false,"visibility":"internal"},{"baseFunctions":[10562],"body":{"id":9975,"nodeType":"Block","src":"5959:311:69","statements":[{"assignments":[9969],"declarations":[{"constant":false,"id":9969,"mutability":"mutable","name":"slot","nodeType":"VariableDeclaration","scope":9975,"src":"5969:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9968,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5969:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":9973,"initialValue":{"arguments":[{"id":9971,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9962,"src":"6000:3:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9970,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10051,"src":"5984:15:69","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":9972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5984:20:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5969:35:69"},{"AST":{"nodeType":"YulBlock","src":"6221:43:69","statements":[{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"6242:4:69"},{"name":"value","nodeType":"YulIdentifier","src":"6248:5:69"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"6235:6:69"},"nodeType":"YulFunctionCall","src":"6235:19:69"},"nodeType":"YulExpressionStatement","src":"6235:19:69"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":9969,"isOffset":false,"isSlot":false,"src":"6242:4:69","valueSize":1},{"declaration":9964,"isOffset":false,"isSlot":false,"src":"6248:5:69","valueSize":1}],"id":9974,"nodeType":"InlineAssembly","src":"6212:52:69"}]},"documentation":{"id":9960,"nodeType":"StructuredDocumentation","src":"5782:91:69","text":" @dev Stores `value` as the amount referenced by chained reference `ref`."},"id":9976,"implemented":true,"kind":"function","modifiers":[],"name":"_setChainedReferenceValue","nodeType":"FunctionDefinition","overrides":{"id":9966,"nodeType":"OverrideSpecifier","overrides":[],"src":"5950:8:69"},"parameters":{"id":9965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9962,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":9976,"src":"5913:11:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9961,"name":"uint256","nodeType":"ElementaryTypeName","src":"5913:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9964,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":9976,"src":"5926:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9963,"name":"uint256","nodeType":"ElementaryTypeName","src":"5926:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5912:28:69"},"returnParameters":{"id":9967,"nodeType":"ParameterList","parameters":[],"src":"5959:0:69"},"scope":10066,"src":"5878:392:69","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[10569],"body":{"id":10001,"nodeType":"Block","src":"6710:291:69","statements":[{"assignments":[9986,9988],"declarations":[{"constant":false,"id":9986,"mutability":"mutable","name":"slot","nodeType":"VariableDeclaration","scope":10001,"src":"6721:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9985,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6721:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9988,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":10001,"src":"6735:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9987,"name":"uint256","nodeType":"ElementaryTypeName","src":"6735:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9992,"initialValue":{"arguments":[{"id":9990,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9979,"src":"6779:3:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9989,"name":"_peekChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10020,"src":"6752:26:69","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bytes32_$_t_uint256_$","typeString":"function (uint256) view returns (bytes32,uint256)"}},"id":9991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6752:31:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6720:63:69"},{"condition":{"arguments":[{"id":9994,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9979,"src":"6827:3:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9993,"name":"_isTemporaryChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9959,"src":"6798:28:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":9995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6798:33:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9998,"nodeType":"IfStatement","src":"6794:179:69","trueBody":{"id":9997,"nodeType":"Block","src":"6833:140:69","statements":[{"AST":{"nodeType":"YulBlock","src":"6916:47:69","statements":[{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"6941:4:69"},{"kind":"number","nodeType":"YulLiteral","src":"6947:1:69","type":"","value":"0"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"6934:6:69"},"nodeType":"YulFunctionCall","src":"6934:15:69"},"nodeType":"YulExpressionStatement","src":"6934:15:69"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":9986,"isOffset":false,"isSlot":false,"src":"6941:4:69","valueSize":1}],"id":9996,"nodeType":"InlineAssembly","src":"6907:56:69"}]}},{"expression":{"id":9999,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9988,"src":"6989:5:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9984,"id":10000,"nodeType":"Return","src":"6982:12:69"}]},"documentation":{"id":9977,"nodeType":"StructuredDocumentation","src":"6276:345:69","text":" @dev Returns the amount referenced by chained reference `ref`.\n If the reference is temporary, it will be cleared after reading it, so they can each only be read once.\n If the reference is not temporary (i.e. read-only), it will not be cleared after reading it\n (see `_isTemporaryChainedReference` function)."},"id":10002,"implemented":true,"kind":"function","modifiers":[],"name":"_getChainedReferenceValue","nodeType":"FunctionDefinition","overrides":{"id":9981,"nodeType":"OverrideSpecifier","overrides":[],"src":"6683:8:69"},"parameters":{"id":9980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9979,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":10002,"src":"6661:11:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9978,"name":"uint256","nodeType":"ElementaryTypeName","src":"6661:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6660:13:69"},"returnParameters":{"id":9984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9983,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10002,"src":"6701:7:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9982,"name":"uint256","nodeType":"ElementaryTypeName","src":"6701:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6700:9:69"},"scope":10066,"src":"6626:375:69","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10019,"nodeType":"Block","src":"7295:304:69","statements":[{"expression":{"id":10016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10012,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10008,"src":"7305:4:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10014,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10005,"src":"7328:3:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10013,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10051,"src":"7312:15:69","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":10015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7312:20:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7305:27:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":10017,"nodeType":"ExpressionStatement","src":"7305:27:69"},{"AST":{"nodeType":"YulBlock","src":"7549:44:69","statements":[{"nodeType":"YulAssignment","src":"7563:20:69","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"7578:4:69"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"7572:5:69"},"nodeType":"YulFunctionCall","src":"7572:11:69"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"7563:5:69"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":10008,"isOffset":false,"isSlot":false,"src":"7578:4:69","valueSize":1},{"declaration":10010,"isOffset":false,"isSlot":false,"src":"7563:5:69","valueSize":1}],"id":10018,"nodeType":"InlineAssembly","src":"7540:53:69"}]},"documentation":{"id":10003,"nodeType":"StructuredDocumentation","src":"7007:183:69","text":" @dev Returns the storage slot for reference `ref` as well as the amount referenced by it.\n It does not alter the reference (even if it's marked as temporary)."},"id":10020,"implemented":true,"kind":"function","modifiers":[],"name":"_peekChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":10006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10005,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":10020,"src":"7231:11:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10004,"name":"uint256","nodeType":"ElementaryTypeName","src":"7231:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7230:13:69"},"returnParameters":{"id":10011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10008,"mutability":"mutable","name":"slot","nodeType":"VariableDeclaration","scope":10020,"src":"7266:12:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10007,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7266:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10010,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":10020,"src":"7280:13:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10009,"name":"uint256","nodeType":"ElementaryTypeName","src":"7280:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7265:29:69"},"scope":10066,"src":"7195:404:69","stateMutability":"view","virtual":false,"visibility":"private"},{"constant":false,"id":10025,"mutability":"immutable","name":"_TEMP_STORAGE_SUFFIX","nodeType":"VariableDeclaration","scope":10066,"src":"7657:91:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10021,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7657:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"62616c616e6365722e626173652d72656c617965722d6c696272617279","id":10023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7716:31:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_ae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb509","typeString":"literal_string \"balancer.base-relayer-library\""},"value":"balancer.base-relayer-library"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_ae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb509","typeString":"literal_string \"balancer.base-relayer-library\""}],"id":10022,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7706:9:69","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":10024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7706:42:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":10050,"nodeType":"Block","src":"7824:526:69","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":10040,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10027,"src":"8309:3:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10039,"name":"_removeReferencePrefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10065,"src":"8286:22:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":10041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8286:27:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10042,"name":"_TEMP_STORAGE_SUFFIX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10025,"src":"8315:20:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10037,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8269:3:69","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":10038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"8269:16:69","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":10043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8269:67:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10036,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8259:9:69","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":10044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8259:78:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":10035,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8251:7:69","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10034,"name":"uint256","nodeType":"ElementaryTypeName","src":"8251:7:69","typeDescriptions":{}}},"id":10045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8251:87:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8341:1:69","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8251:91:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8243:7:69","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":10032,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8243:7:69","typeDescriptions":{}}},"id":10048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8243:100:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":10031,"id":10049,"nodeType":"Return","src":"8236:107:69"}]},"id":10051,"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageSlot","nodeType":"FunctionDefinition","parameters":{"id":10028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10027,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":10051,"src":"7780:11:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10026,"name":"uint256","nodeType":"ElementaryTypeName","src":"7780:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7779:13:69"},"returnParameters":{"id":10031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10030,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10051,"src":"7815:7:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10029,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7815:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7814:9:69"},"scope":10066,"src":"7755:595:69","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":10064,"nodeType":"Block","src":"8617:98:69","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10059,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10054,"src":"8635:3:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666","id":10060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8641:66:69","typeDescriptions":{"typeIdentifier":"t_rational_1766847064778384329583297500742918515827483896875618958121606201292619775_by_1","typeString":"int_const 1766...(65 digits omitted)...9775"},"value":"0x0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},"src":"8635:72:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10062,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8634:74:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10058,"id":10063,"nodeType":"Return","src":"8627:81:69"}]},"documentation":{"id":10052,"nodeType":"StructuredDocumentation","src":"8356:180:69","text":" @dev Returns a reference without its prefix.\n Use this function to calculate the storage slot so that it's the same for temporary and read-only references."},"id":10065,"implemented":true,"kind":"function","modifiers":[],"name":"_removeReferencePrefix","nodeType":"FunctionDefinition","parameters":{"id":10055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10054,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":10065,"src":"8573:11:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10053,"name":"uint256","nodeType":"ElementaryTypeName","src":"8573:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8572:13:69"},"returnParameters":{"id":10058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10057,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10065,"src":"8608:7:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10056,"name":"uint256","nodeType":"ElementaryTypeName","src":"8608:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8607:9:69"},"scope":10066,"src":"8541:174:69","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":10067,"src":"1785:6932:69"}],"src":"688:8030:69"},"id":69},"contracts/relayer/ERC4626Wrapping.sol":{"ast":{"absolutePath":"contracts/relayer/ERC4626Wrapping.sol","exportedSymbols":{"ERC4626Wrapping":[10232]},"id":10233,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10068,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:70"},{"id":10069,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:70"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol","id":10070,"nodeType":"ImportDirective","scope":10233,"sourceUnit":1872,"src":"747:81:70","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":10071,"nodeType":"ImportDirective","scope":10233,"sourceUnit":3372,"src":"829:65:70","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":10072,"nodeType":"ImportDirective","scope":10233,"sourceUnit":6338,"src":"896:77:70","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":10073,"nodeType":"ImportDirective","scope":10233,"sourceUnit":10571,"src":"975:35:70","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":10075,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":10570,"src":"1232:19:70","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$10570","typeString":"contract IBaseRelayerLibrary"}},"id":10076,"nodeType":"InheritanceSpecifier","src":"1232:19:70"}],"contractDependencies":[8042,10570],"contractKind":"contract","documentation":{"id":10074,"nodeType":"StructuredDocumentation","src":"1012:182:70","text":" @title ERC4626Wrapping\n @notice Allows users to wrap and unwrap ERC4626 tokens\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":10232,"linearizedBaseContracts":[10232,10570,8042],"name":"ERC4626Wrapping","nodeType":"ContractDefinition","nodes":[{"id":10079,"libraryName":{"id":10077,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":6337,"src":"1264:7:70","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$6337","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1258:34:70","typeName":{"id":10078,"name":"address","nodeType":"ElementaryTypeName","src":"1276:15:70","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"body":{"id":10161,"nodeType":"Block","src":"1481:768:70","statements":[{"condition":{"arguments":[{"id":10093,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10087,"src":"1515:6:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10092,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"1495:19:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":10094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1495:27:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10102,"nodeType":"IfStatement","src":"1491:100:70","trueBody":{"id":10101,"nodeType":"Block","src":"1524:67:70","statements":[{"expression":{"id":10099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10095,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10087,"src":"1538:6:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10097,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10087,"src":"1573:6:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10096,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"1547:25:70","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":10098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1547:33:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1538:42:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10100,"nodeType":"ExpressionStatement","src":"1538:42:70"}]}},{"assignments":[10104],"declarations":[{"constant":false,"id":10104,"mutability":"mutable","name":"underlying","nodeType":"VariableDeclaration","scope":10161,"src":"1601:17:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":10103,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1601:6:70","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"id":10110,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10106,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10081,"src":"1628:12:70","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1871","typeString":"contract IERC4626"}},"id":10107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":1848,"src":"1628:18:70","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":10108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1628:20:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10105,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"1621:6:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":10109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1621:28:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1601:48:70"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10111,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10083,"src":"1839:6:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":10114,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1857:4:70","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626Wrapping_$10232","typeString":"contract ERC4626Wrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626Wrapping_$10232","typeString":"contract ERC4626Wrapping"}],"id":10113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1849:7:70","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10112,"name":"address","nodeType":"ElementaryTypeName","src":"1849:7:70","typeDescriptions":{}}},"id":10115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1849:13:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1839:23:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10132,"nodeType":"IfStatement","src":"1835:155:70","trueBody":{"id":10131,"nodeType":"Block","src":"1864:126:70","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10118,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10083,"src":"1886:6:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10119,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1896:3:70","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1896:10:70","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1886:20:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":10122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1908:18:70","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":10117,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1878:7:70","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1878:49:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10124,"nodeType":"ExpressionStatement","src":"1878:49:70"},{"expression":{"arguments":[{"id":10126,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10083,"src":"1952:6:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10127,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10104,"src":"1960:10:70","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},{"id":10128,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10087,"src":"1972:6:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10125,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10537,"src":"1941:10:70","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$1964_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":10129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1941:38:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10130,"nodeType":"ExpressionStatement","src":"1941:38:70"}]}},{"expression":{"arguments":[{"arguments":[{"id":10138,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10081,"src":"2027:12:70","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1871","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$1871","typeString":"contract IERC4626"}],"id":10137,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2019:7:70","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10136,"name":"address","nodeType":"ElementaryTypeName","src":"2019:7:70","typeDescriptions":{}}},"id":10139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2019:21:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10140,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10087,"src":"2042:6:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10133,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10104,"src":"2000:10:70","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":10135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":1933,"src":"2000:18:70","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":10141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2000:49:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10142,"nodeType":"ExpressionStatement","src":"2000:49:70"},{"assignments":[10144],"declarations":[{"constant":false,"id":10144,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":10161,"src":"2059:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10143,"name":"uint256","nodeType":"ElementaryTypeName","src":"2059:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10150,"initialValue":{"arguments":[{"id":10147,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10087,"src":"2097:6:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10148,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10085,"src":"2105:9:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10145,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10081,"src":"2076:12:70","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1871","typeString":"contract IERC4626"}},"id":10146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":1830,"src":"2076:20:70","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) external returns (uint256)"}},"id":10149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2076:39:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2059:56:70"},{"condition":{"arguments":[{"id":10152,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10089,"src":"2150:15:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10151,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"2130:19:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":10153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2130:36:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10160,"nodeType":"IfStatement","src":"2126:117:70","trueBody":{"id":10159,"nodeType":"Block","src":"2168:75:70","statements":[{"expression":{"arguments":[{"id":10155,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10089,"src":"2208:15:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10156,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10144,"src":"2225:6:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10154,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"2182:25:70","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":10157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2182:50:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10158,"nodeType":"ExpressionStatement","src":"2182:50:70"}]}}]},"functionSelector":"6d307ea8","id":10162,"implemented":true,"kind":"function","modifiers":[],"name":"wrapERC4626","nodeType":"FunctionDefinition","parameters":{"id":10090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10081,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":10162,"src":"1328:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1871","typeString":"contract IERC4626"},"typeName":{"id":10080,"name":"IERC4626","nodeType":"UserDefinedTypeName","referencedDeclaration":1871,"src":"1328:8:70","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1871","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":10083,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":10162,"src":"1359:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10082,"name":"address","nodeType":"ElementaryTypeName","src":"1359:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10085,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":10162,"src":"1383:17:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10084,"name":"address","nodeType":"ElementaryTypeName","src":"1383:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10087,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":10162,"src":"1410:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10086,"name":"uint256","nodeType":"ElementaryTypeName","src":"1410:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10089,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":10162,"src":"1434:23:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10088,"name":"uint256","nodeType":"ElementaryTypeName","src":"1434:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1318:145:70"},"returnParameters":{"id":10091,"nodeType":"ParameterList","parameters":[],"src":"1481:0:70"},"scope":10232,"src":"1298:951:70","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":10230,"nodeType":"Block","src":"2440:668:70","statements":[{"condition":{"arguments":[{"id":10176,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10170,"src":"2474:6:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10175,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"2454:19:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":10177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2454:27:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10185,"nodeType":"IfStatement","src":"2450:100:70","trueBody":{"id":10184,"nodeType":"Block","src":"2483:67:70","statements":[{"expression":{"id":10182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10178,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10170,"src":"2497:6:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10180,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10170,"src":"2532:6:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10179,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"2506:25:70","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":10181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2506:33:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2497:42:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10183,"nodeType":"ExpressionStatement","src":"2497:42:70"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10186,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10166,"src":"2741:6:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":10189,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2759:4:70","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626Wrapping_$10232","typeString":"contract ERC4626Wrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626Wrapping_$10232","typeString":"contract ERC4626Wrapping"}],"id":10188,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2751:7:70","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10187,"name":"address","nodeType":"ElementaryTypeName","src":"2751:7:70","typeDescriptions":{}}},"id":10190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2751:13:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2741:23:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10207,"nodeType":"IfStatement","src":"2737:157:70","trueBody":{"id":10206,"nodeType":"Block","src":"2766:128:70","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10193,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10166,"src":"2788:6:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10194,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2798:3:70","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2798:10:70","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2788:20:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":10197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2810:18:70","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":10192,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2780:7:70","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2780:49:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10199,"nodeType":"ExpressionStatement","src":"2780:49:70"},{"expression":{"arguments":[{"id":10201,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10166,"src":"2854:6:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10202,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10164,"src":"2862:12:70","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1871","typeString":"contract IERC4626"}},{"id":10203,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10170,"src":"2876:6:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC4626_$1871","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10200,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10537,"src":"2843:10:70","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$1964_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":10204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2843:40:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10205,"nodeType":"ExpressionStatement","src":"2843:40:70"}]}},{"assignments":[10209],"declarations":[{"constant":false,"id":10209,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":10230,"src":"2904:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10208,"name":"uint256","nodeType":"ElementaryTypeName","src":"2904:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10219,"initialValue":{"arguments":[{"id":10212,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10170,"src":"2941:6:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10213,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10168,"src":"2949:9:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":10216,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2968:4:70","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626Wrapping_$10232","typeString":"contract ERC4626Wrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626Wrapping_$10232","typeString":"contract ERC4626Wrapping"}],"id":10215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2960:7:70","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10214,"name":"address","nodeType":"ElementaryTypeName","src":"2960:7:70","typeDescriptions":{}}},"id":10217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2960:13:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10210,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10164,"src":"2921:12:70","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1871","typeString":"contract IERC4626"}},"id":10211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"redeem","nodeType":"MemberAccess","referencedDeclaration":1842,"src":"2921:19:70","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) external returns (uint256)"}},"id":10218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2921:53:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2904:70:70"},{"condition":{"arguments":[{"id":10221,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10172,"src":"3009:15:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10220,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"2989:19:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":10222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2989:36:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10229,"nodeType":"IfStatement","src":"2985:117:70","trueBody":{"id":10228,"nodeType":"Block","src":"3027:75:70","statements":[{"expression":{"arguments":[{"id":10224,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10172,"src":"3067:15:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10225,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10209,"src":"3084:6:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10223,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"3041:25:70","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":10226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3041:50:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10227,"nodeType":"ExpressionStatement","src":"3041:50:70"}]}}]},"functionSelector":"efe69108","id":10231,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapERC4626","nodeType":"FunctionDefinition","parameters":{"id":10173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10164,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":10231,"src":"2287:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1871","typeString":"contract IERC4626"},"typeName":{"id":10163,"name":"IERC4626","nodeType":"UserDefinedTypeName","referencedDeclaration":1871,"src":"2287:8:70","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1871","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":10166,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":10231,"src":"2318:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10165,"name":"address","nodeType":"ElementaryTypeName","src":"2318:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10168,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":10231,"src":"2342:17:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10167,"name":"address","nodeType":"ElementaryTypeName","src":"2342:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10170,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":10231,"src":"2369:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10169,"name":"uint256","nodeType":"ElementaryTypeName","src":"2369:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10172,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":10231,"src":"2393:23:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10171,"name":"uint256","nodeType":"ElementaryTypeName","src":"2393:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2277:145:70"},"returnParameters":{"id":10174,"nodeType":"ParameterList","parameters":[],"src":"2440:0:70"},"scope":10232,"src":"2255:853:70","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":10233,"src":"1195:1915:70"}],"src":"688:2423:70"},"id":70},"contracts/relayer/GaugeActions.sol":{"ast":{"absolutePath":"contracts/relayer/GaugeActions.sol","exportedSymbols":{"GaugeActions":[10492]},"id":10493,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10234,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:71"},{"id":10235,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:71"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol","id":10236,"nodeType":"ImportDirective","scope":10493,"sourceUnit":176,"src":"747:85:71","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","id":10237,"nodeType":"ImportDirective","scope":10493,"sourceUnit":544,"src":"833:92:71","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":10238,"nodeType":"ImportDirective","scope":10493,"sourceUnit":3372,"src":"926:65:71","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":10239,"nodeType":"ImportDirective","scope":10493,"sourceUnit":6338,"src":"993:77:71","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":10240,"nodeType":"ImportDirective","scope":10493,"sourceUnit":10571,"src":"1072:35:71","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":10242,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":10570,"src":"1265:19:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$10570","typeString":"contract IBaseRelayerLibrary"}},"id":10243,"nodeType":"InheritanceSpecifier","src":"1265:19:71"}],"contractDependencies":[8042,10570],"contractKind":"contract","documentation":{"id":10241,"nodeType":"StructuredDocumentation","src":"1109:121:71","text":" @title GaugeActions\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":10492,"linearizedBaseContracts":[10492,10570,8042],"name":"GaugeActions","nodeType":"ContractDefinition","nodes":[{"id":10246,"libraryName":{"id":10244,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":6337,"src":"1297:7:71","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$6337","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1291:34:71","typeName":{"id":10245,"name":"address","nodeType":"ElementaryTypeName","src":"1309:15:71","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"constant":false,"id":10248,"mutability":"immutable","name":"_balancerMinter","nodeType":"VariableDeclaration","scope":10492,"src":"1331:49:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"},"typeName":{"id":10247,"name":"IBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":175,"src":"1331:15:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}},"visibility":"private"},{"body":{"id":10258,"nodeType":"Block","src":"1575:49:71","statements":[{"expression":{"id":10256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10254,"name":"_balancerMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10248,"src":"1585:15:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10255,"name":"balancerMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10251,"src":"1603:14:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}},"src":"1585:32:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}},"id":10257,"nodeType":"ExpressionStatement","src":"1585:32:71"}]},"documentation":{"id":10249,"nodeType":"StructuredDocumentation","src":"1387:139:71","text":" @dev The zero address may be passed as balancerMinter to safely disable features\n which only exist on mainnet"},"id":10259,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":10252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10251,"mutability":"mutable","name":"balancerMinter","nodeType":"VariableDeclaration","scope":10259,"src":"1543:30:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"},"typeName":{"id":10250,"name":"IBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":175,"src":"1543:15:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}},"visibility":"internal"}],"src":"1542:32:71"},"returnParameters":{"id":10253,"nodeType":"ParameterList","parameters":[],"src":"1575:0:71"},"scope":10492,"src":"1531:93:71","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10326,"nodeType":"Block","src":"1788:678:71","statements":[{"condition":{"arguments":[{"id":10271,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10267,"src":"1822:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10270,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"1802:19:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":10272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1802:27:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10280,"nodeType":"IfStatement","src":"1798:100:71","trueBody":{"id":10279,"nodeType":"Block","src":"1831:67:71","statements":[{"expression":{"id":10277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10273,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10267,"src":"1845:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10275,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10267,"src":"1880:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10274,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"1854:25:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":10276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1854:33:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1845:42:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10278,"nodeType":"ExpressionStatement","src":"1845:42:71"}]}},{"assignments":[10282],"declarations":[{"constant":false,"id":10282,"mutability":"mutable","name":"bptToken","nodeType":"VariableDeclaration","scope":10326,"src":"1991:15:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":10281,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1991:6:71","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"id":10286,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10283,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10261,"src":"2009:5:71","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$543","typeString":"contract IStakingLiquidityGauge"}},"id":10284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"lp_token","nodeType":"MemberAccess","referencedDeclaration":530,"src":"2009:14:71","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$1964_$","typeString":"function () view external returns (contract IERC20)"}},"id":10285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2009:16:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1991:34:71"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10287,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10263,"src":"2218:6:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":10290,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2236:4:71","typeDescriptions":{"typeIdentifier":"t_contract$_GaugeActions_$10492","typeString":"contract GaugeActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GaugeActions_$10492","typeString":"contract GaugeActions"}],"id":10289,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2228:7:71","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10288,"name":"address","nodeType":"ElementaryTypeName","src":"2228:7:71","typeDescriptions":{}}},"id":10291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2228:13:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2218:23:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10308,"nodeType":"IfStatement","src":"2214:153:71","trueBody":{"id":10307,"nodeType":"Block","src":"2243:124:71","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10294,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10263,"src":"2265:6:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10295,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2275:3:71","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2275:10:71","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2265:20:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":10298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2287:18:71","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":10293,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2257:7:71","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2257:49:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10300,"nodeType":"ExpressionStatement","src":"2257:49:71"},{"expression":{"arguments":[{"id":10302,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10263,"src":"2331:6:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10303,"name":"bptToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10282,"src":"2339:8:71","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},{"id":10304,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10267,"src":"2349:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10301,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10537,"src":"2320:10:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$1964_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":10305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2320:36:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10306,"nodeType":"ExpressionStatement","src":"2320:36:71"}]}},{"expression":{"arguments":[{"arguments":[{"id":10314,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10261,"src":"2402:5:71","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$543","typeString":"contract IStakingLiquidityGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$543","typeString":"contract IStakingLiquidityGauge"}],"id":10313,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2394:7:71","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10312,"name":"address","nodeType":"ElementaryTypeName","src":"2394:7:71","typeDescriptions":{}}},"id":10315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2394:14:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10316,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10267,"src":"2410:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10309,"name":"bptToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10282,"src":"2377:8:71","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":10311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":1933,"src":"2377:16:71","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":10317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2377:40:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10318,"nodeType":"ExpressionStatement","src":"2377:40:71"},{"expression":{"arguments":[{"id":10322,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10267,"src":"2441:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10323,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10265,"src":"2449:9:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10319,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10261,"src":"2427:5:71","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$543","typeString":"contract IStakingLiquidityGauge"}},"id":10321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":537,"src":"2427:13:71","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) external"}},"id":10324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2427:32:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10325,"nodeType":"ExpressionStatement","src":"2427:32:71"}]},"functionSelector":"7bc008f5","id":10327,"implemented":true,"kind":"function","modifiers":[],"name":"gaugeDeposit","nodeType":"FunctionDefinition","parameters":{"id":10268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10261,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":10327,"src":"1661:28:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$543","typeString":"contract IStakingLiquidityGauge"},"typeName":{"id":10260,"name":"IStakingLiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":543,"src":"1661:22:71","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$543","typeString":"contract IStakingLiquidityGauge"}},"visibility":"internal"},{"constant":false,"id":10263,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":10327,"src":"1699:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10262,"name":"address","nodeType":"ElementaryTypeName","src":"1699:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10265,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":10327,"src":"1723:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10264,"name":"address","nodeType":"ElementaryTypeName","src":"1723:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10267,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":10327,"src":"1750:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10266,"name":"uint256","nodeType":"ElementaryTypeName","src":"1750:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1651:119:71"},"returnParameters":{"id":10269,"nodeType":"ParameterList","parameters":[],"src":"1788:0:71"},"scope":10492,"src":"1630:836:71","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":10400,"nodeType":"Block","src":"2631:938:71","statements":[{"condition":{"arguments":[{"id":10339,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10335,"src":"2665:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10338,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"2645:19:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":10340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2645:27:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10348,"nodeType":"IfStatement","src":"2641:100:71","trueBody":{"id":10347,"nodeType":"Block","src":"2674:67:71","statements":[{"expression":{"id":10345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10341,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10335,"src":"2688:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10343,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10335,"src":"2723:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10342,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"2697:25:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":10344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2697:33:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2688:42:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10346,"nodeType":"ExpressionStatement","src":"2688:42:71"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10349,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10331,"src":"2932:6:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":10352,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2950:4:71","typeDescriptions":{"typeIdentifier":"t_contract$_GaugeActions_$10492","typeString":"contract GaugeActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GaugeActions_$10492","typeString":"contract GaugeActions"}],"id":10351,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2942:7:71","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10350,"name":"address","nodeType":"ElementaryTypeName","src":"2942:7:71","typeDescriptions":{}}},"id":10353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2942:13:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2932:23:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10372,"nodeType":"IfStatement","src":"2928:158:71","trueBody":{"id":10371,"nodeType":"Block","src":"2957:129:71","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10356,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10331,"src":"2979:6:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10357,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2989:3:71","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2989:10:71","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2979:20:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":10360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3001:18:71","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":10355,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2971:7:71","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2971:49:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10362,"nodeType":"ExpressionStatement","src":"2971:49:71"},{"expression":{"arguments":[{"id":10364,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10331,"src":"3045:6:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":10366,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10329,"src":"3060:5:71","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$543","typeString":"contract IStakingLiquidityGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$543","typeString":"contract IStakingLiquidityGauge"}],"id":10365,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"3053:6:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":10367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3053:13:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},{"id":10368,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10335,"src":"3068:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10363,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10537,"src":"3034:10:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$1964_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":10369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3034:41:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10370,"nodeType":"ExpressionStatement","src":"3034:41:71"}]}},{"expression":{"arguments":[{"id":10376,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10335,"src":"3218:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10373,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10329,"src":"3203:5:71","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$543","typeString":"contract IStakingLiquidityGauge"}},"id":10375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":542,"src":"3203:14:71","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":10377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3203:22:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10378,"nodeType":"ExpressionStatement","src":"3203:22:71"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10379,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10333,"src":"3425:9:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":10382,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3446:4:71","typeDescriptions":{"typeIdentifier":"t_contract$_GaugeActions_$10492","typeString":"contract GaugeActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GaugeActions_$10492","typeString":"contract GaugeActions"}],"id":10381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3438:7:71","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10380,"name":"address","nodeType":"ElementaryTypeName","src":"3438:7:71","typeDescriptions":{}}},"id":10383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3438:13:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3425:26:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10399,"nodeType":"IfStatement","src":"3421:142:71","trueBody":{"id":10398,"nodeType":"Block","src":"3453:110:71","statements":[{"assignments":[10386],"declarations":[{"constant":false,"id":10386,"mutability":"mutable","name":"bptToken","nodeType":"VariableDeclaration","scope":10398,"src":"3467:15:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":10385,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"3467:6:71","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"id":10390,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10387,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10329,"src":"3485:5:71","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$543","typeString":"contract IStakingLiquidityGauge"}},"id":10388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"lp_token","nodeType":"MemberAccess","referencedDeclaration":530,"src":"3485:14:71","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$1964_$","typeString":"function () view external returns (contract IERC20)"}},"id":10389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3485:16:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"3467:34:71"},{"expression":{"arguments":[{"id":10394,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10333,"src":"3534:9:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10395,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10335,"src":"3545:6:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10391,"name":"bptToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10386,"src":"3516:8:71","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":10393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":1913,"src":"3516:17:71","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":10396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3516:36:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10397,"nodeType":"ExpressionStatement","src":"3516:36:71"}]}}]},"functionSelector":"65ca4804","id":10401,"implemented":true,"kind":"function","modifiers":[],"name":"gaugeWithdraw","nodeType":"FunctionDefinition","parameters":{"id":10336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10329,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":10401,"src":"2504:28:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$543","typeString":"contract IStakingLiquidityGauge"},"typeName":{"id":10328,"name":"IStakingLiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":543,"src":"2504:22:71","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$543","typeString":"contract IStakingLiquidityGauge"}},"visibility":"internal"},{"constant":false,"id":10331,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":10401,"src":"2542:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10330,"name":"address","nodeType":"ElementaryTypeName","src":"2542:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10333,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":10401,"src":"2566:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10332,"name":"address","nodeType":"ElementaryTypeName","src":"2566:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10335,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":10401,"src":"2593:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10334,"name":"uint256","nodeType":"ElementaryTypeName","src":"2593:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2494:119:71"},"returnParameters":{"id":10337,"nodeType":"ParameterList","parameters":[],"src":"2631:0:71"},"scope":10492,"src":"2472:1097:71","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":10428,"nodeType":"Block","src":"3663:214:71","statements":[{"assignments":[10410],"declarations":[{"constant":false,"id":10410,"mutability":"mutable","name":"balMinted","nodeType":"VariableDeclaration","scope":10428,"src":"3673:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10409,"name":"uint256","nodeType":"ElementaryTypeName","src":"3673:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10417,"initialValue":{"arguments":[{"id":10413,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10404,"src":"3721:6:71","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"expression":{"id":10414,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3729:3:71","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3729:10:71","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":10411,"name":"_balancerMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10248,"src":"3693:15:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}},"id":10412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mintManyFor","nodeType":"MemberAccess","referencedDeclaration":96,"src":"3693:27:71","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$_t_uint256_$","typeString":"function (address[] memory,address) external returns (uint256)"}},"id":10416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3693:47:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3673:67:71"},{"condition":{"arguments":[{"id":10419,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10406,"src":"3775:15:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10418,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"3755:19:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":10420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3755:36:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10427,"nodeType":"IfStatement","src":"3751:120:71","trueBody":{"id":10426,"nodeType":"Block","src":"3793:78:71","statements":[{"expression":{"arguments":[{"id":10422,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10406,"src":"3833:15:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10423,"name":"balMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10410,"src":"3850:9:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10421,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"3807:25:71","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":10424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3807:53:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10425,"nodeType":"ExpressionStatement","src":"3807:53:71"}]}}]},"functionSelector":"3f85d390","id":10429,"implemented":true,"kind":"function","modifiers":[],"name":"gaugeMint","nodeType":"FunctionDefinition","parameters":{"id":10407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10404,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":10429,"src":"3594:25:71","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10402,"name":"address","nodeType":"ElementaryTypeName","src":"3594:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10403,"nodeType":"ArrayTypeName","src":"3594:9:71","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":10406,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":10429,"src":"3621:23:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10405,"name":"uint256","nodeType":"ElementaryTypeName","src":"3621:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3593:52:71"},"returnParameters":{"id":10408,"nodeType":"ParameterList","parameters":[],"src":"3663:0:71"},"scope":10492,"src":"3575:302:71","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":10459,"nodeType":"Block","src":"4064:113:71","statements":[{"expression":{"arguments":[{"arguments":[{"id":10449,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4129:4:71","typeDescriptions":{"typeIdentifier":"t_contract$_GaugeActions_$10492","typeString":"contract GaugeActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GaugeActions_$10492","typeString":"contract GaugeActions"}],"id":10448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4121:7:71","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10447,"name":"address","nodeType":"ElementaryTypeName","src":"4121:7:71","typeDescriptions":{}}},"id":10450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4121:13:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10451,"name":"approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10431,"src":"4136:8:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":10452,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10433,"src":"4146:4:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10453,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10435,"src":"4152:8:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10454,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10437,"src":"4162:1:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":10455,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10439,"src":"4165:1:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10456,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10441,"src":"4168:1:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10444,"name":"_balancerMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10248,"src":"4074:15:71","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}},"id":10446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setMinterApprovalWithSignature","nodeType":"MemberAccess","referencedDeclaration":142,"src":"4074:46:71","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bool_$_t_address_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,bool,address,uint256,uint8,bytes32,bytes32) external"}},"id":10457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4074:96:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10458,"nodeType":"ExpressionStatement","src":"4074:96:71"}]},"functionSelector":"8c57198b","id":10460,"implemented":true,"kind":"function","modifiers":[],"name":"gaugeSetMinterApproval","nodeType":"FunctionDefinition","parameters":{"id":10442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10431,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":10460,"src":"3924:13:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10430,"name":"bool","nodeType":"ElementaryTypeName","src":"3924:4:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10433,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":10460,"src":"3947:12:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10432,"name":"address","nodeType":"ElementaryTypeName","src":"3947:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10435,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":10460,"src":"3969:16:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10434,"name":"uint256","nodeType":"ElementaryTypeName","src":"3969:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10437,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":10460,"src":"3995:7:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":10436,"name":"uint8","nodeType":"ElementaryTypeName","src":"3995:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":10439,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":10460,"src":"4012:9:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10438,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4012:7:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10441,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":10460,"src":"4031:9:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10440,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4031:7:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3914:132:71"},"returnParameters":{"id":10443,"nodeType":"ParameterList","parameters":[],"src":"4064:0:71"},"scope":10492,"src":"3883:294:71","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":10490,"nodeType":"Block","src":"4269:155:71","statements":[{"assignments":[10467],"declarations":[{"constant":false,"id":10467,"mutability":"mutable","name":"numGauges","nodeType":"VariableDeclaration","scope":10490,"src":"4279:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10466,"name":"uint256","nodeType":"ElementaryTypeName","src":"4279:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10470,"initialValue":{"expression":{"id":10468,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10463,"src":"4299:6:71","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$543_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[] calldata"}},"id":10469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4299:13:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4279:33:71"},{"body":{"id":10488,"nodeType":"Block","src":"4358:60:71","statements":[{"expression":{"arguments":[{"expression":{"id":10484,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4396:3:71","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4396:10:71","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"baseExpression":{"id":10480,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10463,"src":"4372:6:71","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$543_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[] calldata"}},"id":10482,"indexExpression":{"id":10481,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10472,"src":"4379:1:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4372:9:71","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$543","typeString":"contract IStakingLiquidityGauge"}},"id":10483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"claim_rewards","nodeType":"MemberAccess","referencedDeclaration":466,"src":"4372:23:71","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":10486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4372:35:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10487,"nodeType":"ExpressionStatement","src":"4372:35:71"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10474,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10472,"src":"4338:1:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10475,"name":"numGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10467,"src":"4342:9:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4338:13:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10489,"initializationExpression":{"assignments":[10472],"declarations":[{"constant":false,"id":10472,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":10489,"src":"4327:9:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10471,"name":"uint256","nodeType":"ElementaryTypeName","src":"4327:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10473,"nodeType":"VariableDeclarationStatement","src":"4327:9:71"},"loopExpression":{"expression":{"id":10478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4353:3:71","subExpression":{"id":10477,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10472,"src":"4355:1:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10479,"nodeType":"ExpressionStatement","src":"4353:3:71"},"nodeType":"ForStatement","src":"4322:96:71"}]},"functionSelector":"0e248fea","id":10491,"implemented":true,"kind":"function","modifiers":[],"name":"gaugeClaimRewards","nodeType":"FunctionDefinition","parameters":{"id":10464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10463,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":10491,"src":"4210:40:71","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$543_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[]"},"typeName":{"baseType":{"id":10461,"name":"IStakingLiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":543,"src":"4210:22:71","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$543","typeString":"contract IStakingLiquidityGauge"}},"id":10462,"nodeType":"ArrayTypeName","src":"4210:24:71","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$543_$dyn_storage_ptr","typeString":"contract IStakingLiquidityGauge[]"}},"visibility":"internal"}],"src":"4209:42:71"},"returnParameters":{"id":10465,"nodeType":"ParameterList","parameters":[],"src":"4269:0:71"},"scope":10492,"src":"4183:241:71","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":10493,"src":"1231:3195:71"}],"src":"688:3739:71"},"id":71},"contracts/relayer/IBaseRelayerLibrary.sol":{"ast":{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","exportedSymbols":{"IBaseRelayerLibrary":[10570]},"id":10571,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10494,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:72"},{"id":10495,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:72"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":10496,"nodeType":"ImportDirective","scope":10571,"sourceUnit":3372,"src":"747:65:72","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-vault/contracts/AssetHelpers.sol","file":"@balancer-labs/v2-vault/contracts/AssetHelpers.sol","id":10497,"nodeType":"ImportDirective","scope":10571,"sourceUnit":8043,"src":"814:60:72","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":10499,"name":"AssetHelpers","nodeType":"UserDefinedTypeName","referencedDeclaration":8042,"src":"955:12:72","typeDescriptions":{"typeIdentifier":"t_contract$_AssetHelpers_$8042","typeString":"contract AssetHelpers"}},"id":10500,"nodeType":"InheritanceSpecifier","src":"955:12:72"}],"contractDependencies":[8042],"contractKind":"contract","documentation":{"id":10498,"nodeType":"StructuredDocumentation","src":"876:37:72","text":" @title IBaseRelayerLibrary"},"fullyImplemented":false,"id":10570,"linearizedBaseContracts":[10570,8042],"name":"IBaseRelayerLibrary","nodeType":"ContractDefinition","nodes":[{"body":{"id":10508,"nodeType":"Block","src":"1017:64:72","statements":[]},"id":10509,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":10505,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10502,"src":"1011:4:72","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1886","typeString":"contract IWETH"}}],"id":10506,"modifierName":{"id":10504,"name":"AssetHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8042,"src":"998:12:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AssetHelpers_$8042_$","typeString":"type(contract AssetHelpers)"}},"nodeType":"ModifierInvocation","src":"998:18:72"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":10503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10502,"mutability":"mutable","name":"weth","nodeType":"VariableDeclaration","scope":10509,"src":"986:10:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1886","typeString":"contract IWETH"},"typeName":{"id":10501,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":1886,"src":"986:5:72","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1886","typeString":"contract IWETH"}},"visibility":"internal"}],"src":"985:12:72"},"returnParameters":{"id":10507,"nodeType":"ParameterList","parameters":[],"src":"1017:0:72"},"scope":10570,"src":"974:107:72","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"functionSelector":"8d928af8","id":10514,"implemented":false,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":10510,"nodeType":"ParameterList","parameters":[],"src":"1104:2:72"},"returnParameters":{"id":10513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10512,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10514,"src":"1136:6:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":10511,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"1136:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1135:8:72"},"scope":10570,"src":"1087:57:72","stateMutability":"view","virtual":true,"visibility":"public"},{"functionSelector":"b6d24737","id":10521,"implemented":false,"kind":"function","modifiers":[],"name":"approveVault","nodeType":"FunctionDefinition","parameters":{"id":10519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10516,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":10521,"src":"1172:12:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":10515,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1172:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":10518,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":10521,"src":"1186:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10517,"name":"uint256","nodeType":"ElementaryTypeName","src":"1186:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1171:30:72"},"returnParameters":{"id":10520,"nodeType":"ParameterList","parameters":[],"src":"1216:0:72"},"scope":10570,"src":"1150:67:72","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"functionSelector":"f3cab685","id":10528,"implemented":false,"kind":"function","modifiers":[],"name":"peekChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":10524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10523,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":10528,"src":"1258:11:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10522,"name":"uint256","nodeType":"ElementaryTypeName","src":"1258:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1257:13:72"},"returnParameters":{"id":10527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10526,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10528,"src":"1300:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10525,"name":"uint256","nodeType":"ElementaryTypeName","src":"1300:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1299:9:72"},"scope":10570,"src":"1223:86:72","stateMutability":"view","virtual":true,"visibility":"public"},{"id":10537,"implemented":false,"kind":"function","modifiers":[],"name":"_pullToken","nodeType":"FunctionDefinition","parameters":{"id":10535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10530,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":10537,"src":"1344:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10529,"name":"address","nodeType":"ElementaryTypeName","src":"1344:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10532,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":10537,"src":"1368:12:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":10531,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1368:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":10534,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":10537,"src":"1390:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10533,"name":"uint256","nodeType":"ElementaryTypeName","src":"1390:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1334:76:72"},"returnParameters":{"id":10536,"nodeType":"ParameterList","parameters":[],"src":"1427:0:72"},"scope":10570,"src":"1315:113:72","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":10548,"implemented":false,"kind":"function","modifiers":[],"name":"_pullTokens","nodeType":"FunctionDefinition","parameters":{"id":10546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10539,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":10548,"src":"1464:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10538,"name":"address","nodeType":"ElementaryTypeName","src":"1464:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10542,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":10548,"src":"1488:22:72","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":10540,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1488:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":10541,"nodeType":"ArrayTypeName","src":"1488:8:72","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":10545,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":10548,"src":"1520:24:72","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10543,"name":"uint256","nodeType":"ElementaryTypeName","src":"1520:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10544,"nodeType":"ArrayTypeName","src":"1520:9:72","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1454:96:72"},"returnParameters":{"id":10547,"nodeType":"ParameterList","parameters":[],"src":"1567:0:72"},"scope":10570,"src":"1434:134:72","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":10555,"implemented":false,"kind":"function","modifiers":[],"name":"_isChainedReference","nodeType":"FunctionDefinition","parameters":{"id":10551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10550,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":10555,"src":"1603:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10549,"name":"uint256","nodeType":"ElementaryTypeName","src":"1603:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1602:16:72"},"returnParameters":{"id":10554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10553,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10555,"src":"1650:4:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10552,"name":"bool","nodeType":"ElementaryTypeName","src":"1650:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1649:6:72"},"scope":10570,"src":"1574:82:72","stateMutability":"pure","virtual":true,"visibility":"internal"},{"id":10562,"implemented":false,"kind":"function","modifiers":[],"name":"_setChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":10560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10557,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":10562,"src":"1697:11:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10556,"name":"uint256","nodeType":"ElementaryTypeName","src":"1697:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10559,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":10562,"src":"1710:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10558,"name":"uint256","nodeType":"ElementaryTypeName","src":"1710:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1696:28:72"},"returnParameters":{"id":10561,"nodeType":"ParameterList","parameters":[],"src":"1741:0:72"},"scope":10570,"src":"1662:80:72","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":10569,"implemented":false,"kind":"function","modifiers":[],"name":"_getChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":10565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10564,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":10569,"src":"1783:11:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10563,"name":"uint256","nodeType":"ElementaryTypeName","src":"1783:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1782:13:72"},"returnParameters":{"id":10568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10567,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10569,"src":"1822:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10566,"name":"uint256","nodeType":"ElementaryTypeName","src":"1822:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1821:9:72"},"scope":10570,"src":"1748:83:72","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":10571,"src":"914:919:72"}],"src":"688:1146:72"},"id":72},"contracts/relayer/LidoWrapping.sol":{"ast":{"absolutePath":"contracts/relayer/LidoWrapping.sol","exportedSymbols":{"LidoWrapping":[10913]},"id":10914,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10572,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:73"},{"id":10573,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:73"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","id":10574,"nodeType":"ImportDirective","scope":10914,"sourceUnit":2598,"src":"747:76:73","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol","id":10575,"nodeType":"ImportDirective","scope":10914,"sourceUnit":2655,"src":"824:77:73","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":10576,"nodeType":"ImportDirective","scope":10914,"sourceUnit":3372,"src":"902:65:73","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":10577,"nodeType":"ImportDirective","scope":10914,"sourceUnit":6338,"src":"969:77:73","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":10578,"nodeType":"ImportDirective","scope":10914,"sourceUnit":10571,"src":"1048:35:73","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":10580,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":10570,"src":"1290:19:73","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$10570","typeString":"contract IBaseRelayerLibrary"}},"id":10581,"nodeType":"InheritanceSpecifier","src":"1290:19:73"}],"contractDependencies":[8042,10570],"contractKind":"contract","documentation":{"id":10579,"nodeType":"StructuredDocumentation","src":"1085:170:73","text":" @title LidoWrapping\n @notice Allows users to wrap and unwrap stETH\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":10913,"linearizedBaseContracts":[10913,10570,8042],"name":"LidoWrapping","nodeType":"ContractDefinition","nodes":[{"id":10584,"libraryName":{"id":10582,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":6337,"src":"1322:7:73","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$6337","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1316:34:73","typeName":{"id":10583,"name":"address","nodeType":"ElementaryTypeName","src":"1334:15:73","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"constant":false,"id":10586,"mutability":"immutable","name":"_stETH","nodeType":"VariableDeclaration","scope":10913,"src":"1356:31:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"},"typeName":{"id":10585,"name":"IstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2597,"src":"1356:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"visibility":"private"},{"constant":false,"id":10588,"mutability":"immutable","name":"_wstETH","nodeType":"VariableDeclaration","scope":10913,"src":"1393:33:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"},"typeName":{"id":10587,"name":"IwstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2654,"src":"1393:7:73","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"}},"visibility":"private"},{"body":{"id":10623,"nodeType":"Block","src":"1627:218:73","statements":[{"expression":{"id":10612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10594,"name":"_stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10586,"src":"1719:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"id":10599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10595,"name":"wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10591,"src":"1728:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":10597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1745:1:73","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":10596,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"1738:6:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":10598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1738:9:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"1728:19:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"hexValue":"30","id":10609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1792:1:73","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":10608,"name":"IstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"1785:6:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IstETH_$2597_$","typeString":"type(contract IstETH)"}},"id":10610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1785:9:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"id":10611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1728:66:73","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":10603,"name":"wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10591,"src":"1766:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}],"id":10602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1758:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10601,"name":"address","nodeType":"ElementaryTypeName","src":"1758:7:73","typeDescriptions":{}}},"id":10604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1758:15:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10600,"name":"IwstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2654,"src":"1750:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IwstETH_$2654_$","typeString":"type(contract IwstETH)"}},"id":10605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1750:24:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"}},"id":10606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"stETH","nodeType":"MemberAccess","referencedDeclaration":2609,"src":"1750:30:73","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_contract$_IstETH_$2597_$","typeString":"function () external returns (contract IstETH)"}},"id":10607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1750:32:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"src":"1719:75:73","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"id":10613,"nodeType":"ExpressionStatement","src":"1719:75:73"},{"expression":{"id":10621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10614,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10588,"src":"1804:7:73","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":10618,"name":"wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10591,"src":"1830:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}],"id":10617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1822:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10616,"name":"address","nodeType":"ElementaryTypeName","src":"1822:7:73","typeDescriptions":{}}},"id":10619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1822:15:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10615,"name":"IwstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2654,"src":"1814:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IwstETH_$2654_$","typeString":"type(contract IwstETH)"}},"id":10620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1814:24:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"}},"src":"1804:34:73","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"}},"id":10622,"nodeType":"ExpressionStatement","src":"1804:34:73"}]},"documentation":{"id":10589,"nodeType":"StructuredDocumentation","src":"1433:162:73","text":" @dev The zero address may be passed as wstETH to safely disable this module\n @param wstETH - the address of Lido's wrapped stETH contract"},"id":10624,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":10592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10591,"mutability":"mutable","name":"wstETH","nodeType":"VariableDeclaration","scope":10624,"src":"1612:13:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":10590,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1612:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1611:15:73"},"returnParameters":{"id":10593,"nodeType":"ParameterList","parameters":[],"src":"1627:0:73"},"scope":10913,"src":"1600:245:73","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10712,"nodeType":"Block","src":"2001:784:73","statements":[{"condition":{"arguments":[{"id":10636,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10630,"src":"2035:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10635,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"2015:19:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":10637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2015:27:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10645,"nodeType":"IfStatement","src":"2011:100:73","trueBody":{"id":10644,"nodeType":"Block","src":"2044:67:73","statements":[{"expression":{"id":10642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10638,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10630,"src":"2058:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10640,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10630,"src":"2093:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10639,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"2067:25:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":10641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2067:33:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2058:42:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10643,"nodeType":"ExpressionStatement","src":"2058:42:73"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10646,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10626,"src":"2296:6:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":10649,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2314:4:73","typeDescriptions":{"typeIdentifier":"t_contract$_LidoWrapping_$10913","typeString":"contract LidoWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LidoWrapping_$10913","typeString":"contract LidoWrapping"}],"id":10648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2306:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10647,"name":"address","nodeType":"ElementaryTypeName","src":"2306:7:73","typeDescriptions":{}}},"id":10650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2306:13:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2296:23:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10667,"nodeType":"IfStatement","src":"2292:151:73","trueBody":{"id":10666,"nodeType":"Block","src":"2321:122:73","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10653,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10626,"src":"2343:6:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10654,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2353:3:73","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2353:10:73","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2343:20:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":10657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2365:18:73","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":10652,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2335:7:73","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2335:49:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10659,"nodeType":"ExpressionStatement","src":"2335:49:73"},{"expression":{"arguments":[{"id":10661,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10626,"src":"2409:6:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10662,"name":"_stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10586,"src":"2417:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},{"id":10663,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10630,"src":"2425:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10660,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10537,"src":"2398:10:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$1964_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":10664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2398:34:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10665,"nodeType":"ExpressionStatement","src":"2398:34:73"}]}},{"expression":{"arguments":[{"arguments":[{"id":10673,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10588,"src":"2476:7:73","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"}],"id":10672,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2468:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10671,"name":"address","nodeType":"ElementaryTypeName","src":"2468:7:73","typeDescriptions":{}}},"id":10674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2468:16:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10675,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10630,"src":"2486:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10668,"name":"_stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10586,"src":"2453:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"id":10670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":1933,"src":"2453:14:73","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":10676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2453:40:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10677,"nodeType":"ExpressionStatement","src":"2453:40:73"},{"assignments":[10679],"declarations":[{"constant":false,"id":10679,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":10712,"src":"2503:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10678,"name":"uint256","nodeType":"ElementaryTypeName","src":"2503:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10686,"initialValue":{"arguments":[{"id":10684,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10630,"src":"2542:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":10681,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10588,"src":"2528:7:73","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"}],"id":10680,"name":"IwstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2654,"src":"2520:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IwstETH_$2654_$","typeString":"type(contract IwstETH)"}},"id":10682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2520:16:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"}},"id":10683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"wrap","nodeType":"MemberAccess","referencedDeclaration":2617,"src":"2520:21:73","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) external returns (uint256)"}},"id":10685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2520:29:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2503:46:73"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10687,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10628,"src":"2564:9:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":10690,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2585:4:73","typeDescriptions":{"typeIdentifier":"t_contract$_LidoWrapping_$10913","typeString":"contract LidoWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LidoWrapping_$10913","typeString":"contract LidoWrapping"}],"id":10689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2577:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10688,"name":"address","nodeType":"ElementaryTypeName","src":"2577:7:73","typeDescriptions":{}}},"id":10691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2577:13:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2564:26:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10701,"nodeType":"IfStatement","src":"2560:92:73","trueBody":{"id":10700,"nodeType":"Block","src":"2592:60:73","statements":[{"expression":{"arguments":[{"id":10696,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10628,"src":"2623:9:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10679,"src":"2634:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10693,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10588,"src":"2606:7:73","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"}},"id":10695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":1913,"src":"2606:16:73","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":10698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2606:35:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10699,"nodeType":"ExpressionStatement","src":"2606:35:73"}]}},{"condition":{"arguments":[{"id":10703,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10632,"src":"2686:15:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10702,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"2666:19:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":10704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2666:36:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10711,"nodeType":"IfStatement","src":"2662:117:73","trueBody":{"id":10710,"nodeType":"Block","src":"2704:75:73","statements":[{"expression":{"arguments":[{"id":10706,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10632,"src":"2744:15:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10707,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10679,"src":"2761:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10705,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"2718:25:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":10708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2718:50:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10709,"nodeType":"ExpressionStatement","src":"2718:50:73"}]}}]},"functionSelector":"1c982441","id":10713,"implemented":true,"kind":"function","modifiers":[],"name":"wrapStETH","nodeType":"FunctionDefinition","parameters":{"id":10633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10626,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":10713,"src":"1879:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10625,"name":"address","nodeType":"ElementaryTypeName","src":"1879:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10628,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":10713,"src":"1903:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10627,"name":"address","nodeType":"ElementaryTypeName","src":"1903:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10630,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":10713,"src":"1930:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10629,"name":"uint256","nodeType":"ElementaryTypeName","src":"1930:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10632,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":10713,"src":"1954:23:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10631,"name":"uint256","nodeType":"ElementaryTypeName","src":"1954:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1869:114:73"},"returnParameters":{"id":10634,"nodeType":"ParameterList","parameters":[],"src":"2001:0:73"},"scope":10913,"src":"1851:934:73","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":10789,"nodeType":"Block","src":"2944:824:73","statements":[{"condition":{"arguments":[{"id":10725,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10719,"src":"2978:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10724,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"2958:19:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":10726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2958:27:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10734,"nodeType":"IfStatement","src":"2954:100:73","trueBody":{"id":10733,"nodeType":"Block","src":"2987:67:73","statements":[{"expression":{"id":10731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10727,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10719,"src":"3001:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10729,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10719,"src":"3036:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10728,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"3010:25:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":10730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3010:33:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3001:42:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10732,"nodeType":"ExpressionStatement","src":"3001:42:73"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10735,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10715,"src":"3241:6:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":10738,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3259:4:73","typeDescriptions":{"typeIdentifier":"t_contract$_LidoWrapping_$10913","typeString":"contract LidoWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LidoWrapping_$10913","typeString":"contract LidoWrapping"}],"id":10737,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3251:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10736,"name":"address","nodeType":"ElementaryTypeName","src":"3251:7:73","typeDescriptions":{}}},"id":10739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3251:13:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3241:23:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10756,"nodeType":"IfStatement","src":"3237:152:73","trueBody":{"id":10755,"nodeType":"Block","src":"3266:123:73","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10742,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10715,"src":"3288:6:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10743,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3298:3:73","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3298:10:73","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3288:20:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":10746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3310:18:73","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":10741,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3280:7:73","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3280:49:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10748,"nodeType":"ExpressionStatement","src":"3280:49:73"},{"expression":{"arguments":[{"id":10750,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10715,"src":"3354:6:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10751,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10588,"src":"3362:7:73","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"}},{"id":10752,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10719,"src":"3371:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10749,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10537,"src":"3343:10:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$1964_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":10753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3343:35:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10754,"nodeType":"ExpressionStatement","src":"3343:35:73"}]}},{"assignments":[10758],"declarations":[{"constant":false,"id":10758,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":10789,"src":"3494:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10757,"name":"uint256","nodeType":"ElementaryTypeName","src":"3494:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10763,"initialValue":{"arguments":[{"id":10761,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10719,"src":"3526:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10759,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10588,"src":"3511:7:73","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"}},"id":10760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"unwrap","nodeType":"MemberAccess","referencedDeclaration":2625,"src":"3511:14:73","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) external returns (uint256)"}},"id":10762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3511:22:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3494:39:73"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10764,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10717,"src":"3548:9:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":10767,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3569:4:73","typeDescriptions":{"typeIdentifier":"t_contract$_LidoWrapping_$10913","typeString":"contract LidoWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LidoWrapping_$10913","typeString":"contract LidoWrapping"}],"id":10766,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3561:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10765,"name":"address","nodeType":"ElementaryTypeName","src":"3561:7:73","typeDescriptions":{}}},"id":10768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3561:13:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3548:26:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10778,"nodeType":"IfStatement","src":"3544:91:73","trueBody":{"id":10777,"nodeType":"Block","src":"3576:59:73","statements":[{"expression":{"arguments":[{"id":10773,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10717,"src":"3606:9:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10758,"src":"3617:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10770,"name":"_stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10586,"src":"3590:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"id":10772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":1913,"src":"3590:15:73","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":10775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3590:34:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10776,"nodeType":"ExpressionStatement","src":"3590:34:73"}]}},{"condition":{"arguments":[{"id":10780,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10721,"src":"3669:15:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10779,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"3649:19:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":10781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3649:36:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10788,"nodeType":"IfStatement","src":"3645:117:73","trueBody":{"id":10787,"nodeType":"Block","src":"3687:75:73","statements":[{"expression":{"arguments":[{"id":10783,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10721,"src":"3727:15:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10784,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10758,"src":"3744:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10782,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"3701:25:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":10785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3701:50:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10786,"nodeType":"ExpressionStatement","src":"3701:50:73"}]}}]},"functionSelector":"db4c0e91","id":10790,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapWstETH","nodeType":"FunctionDefinition","parameters":{"id":10722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10715,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":10790,"src":"2822:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10714,"name":"address","nodeType":"ElementaryTypeName","src":"2822:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10717,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":10790,"src":"2846:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10716,"name":"address","nodeType":"ElementaryTypeName","src":"2846:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10719,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":10790,"src":"2873:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10718,"name":"uint256","nodeType":"ElementaryTypeName","src":"2873:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10721,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":10790,"src":"2897:23:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10720,"name":"uint256","nodeType":"ElementaryTypeName","src":"2897:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2812:114:73"},"returnParameters":{"id":10723,"nodeType":"ParameterList","parameters":[],"src":"2944:0:73"},"scope":10913,"src":"2791:977:73","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":10847,"nodeType":"Block","src":"3899:417:73","statements":[{"condition":{"arguments":[{"id":10800,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10794,"src":"3933:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10799,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"3913:19:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":10801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3913:27:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10809,"nodeType":"IfStatement","src":"3909:100:73","trueBody":{"id":10808,"nodeType":"Block","src":"3942:67:73","statements":[{"expression":{"id":10806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10802,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10794,"src":"3956:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10804,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10794,"src":"3991:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10803,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"3965:25:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":10805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3965:33:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3956:42:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10807,"nodeType":"ExpressionStatement","src":"3956:42:73"}]}},{"assignments":[10811],"declarations":[{"constant":false,"id":10811,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":10847,"src":"4019:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10810,"name":"uint256","nodeType":"ElementaryTypeName","src":"4019:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10821,"initialValue":{"arguments":[{"arguments":[{"id":10818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4075:4:73","typeDescriptions":{"typeIdentifier":"t_contract$_LidoWrapping_$10913","typeString":"contract LidoWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LidoWrapping_$10913","typeString":"contract LidoWrapping"}],"id":10817,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4067:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10816,"name":"address","nodeType":"ElementaryTypeName","src":"4067:7:73","typeDescriptions":{}}},"id":10819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4067:13:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10812,"name":"_stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10586,"src":"4036:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"id":10813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"submit","nodeType":"MemberAccess","referencedDeclaration":2596,"src":"4036:13:73","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$_t_uint256_$","typeString":"function (address) payable external returns (uint256)"}},"id":10815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":10814,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10794,"src":"4058:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"4036:30:73","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$_t_uint256_$value","typeString":"function (address) payable external returns (uint256)"}},"id":10820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4036:45:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4019:62:73"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10822,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10792,"src":"4096:9:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":10825,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4117:4:73","typeDescriptions":{"typeIdentifier":"t_contract$_LidoWrapping_$10913","typeString":"contract LidoWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LidoWrapping_$10913","typeString":"contract LidoWrapping"}],"id":10824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4109:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10823,"name":"address","nodeType":"ElementaryTypeName","src":"4109:7:73","typeDescriptions":{}}},"id":10826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4109:13:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4096:26:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10836,"nodeType":"IfStatement","src":"4092:91:73","trueBody":{"id":10835,"nodeType":"Block","src":"4124:59:73","statements":[{"expression":{"arguments":[{"id":10831,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10792,"src":"4154:9:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10832,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10811,"src":"4165:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10828,"name":"_stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10586,"src":"4138:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"id":10830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":1913,"src":"4138:15:73","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":10833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4138:34:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10834,"nodeType":"ExpressionStatement","src":"4138:34:73"}]}},{"condition":{"arguments":[{"id":10838,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10796,"src":"4217:15:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10837,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"4197:19:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":10839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4197:36:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10846,"nodeType":"IfStatement","src":"4193:117:73","trueBody":{"id":10845,"nodeType":"Block","src":"4235:75:73","statements":[{"expression":{"arguments":[{"id":10841,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10796,"src":"4275:15:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10842,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10811,"src":"4292:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10840,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"4249:25:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":10843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4249:50:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10844,"nodeType":"ExpressionStatement","src":"4249:50:73"}]}}]},"functionSelector":"2cbec84e","id":10848,"implemented":true,"kind":"function","modifiers":[],"name":"stakeETH","nodeType":"FunctionDefinition","parameters":{"id":10797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10792,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":10848,"src":"3801:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10791,"name":"address","nodeType":"ElementaryTypeName","src":"3801:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10794,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":10848,"src":"3828:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10793,"name":"uint256","nodeType":"ElementaryTypeName","src":"3828:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10796,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":10848,"src":"3852:23:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10795,"name":"uint256","nodeType":"ElementaryTypeName","src":"3852:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3791:90:73"},"returnParameters":{"id":10798,"nodeType":"ParameterList","parameters":[],"src":"3899:0:73"},"scope":10913,"src":"3774:542:73","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":10911,"nodeType":"Block","src":"4454:1008:73","statements":[{"condition":{"arguments":[{"id":10858,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10852,"src":"4488:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10857,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"4468:19:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":10859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4468:27:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10867,"nodeType":"IfStatement","src":"4464:100:73","trueBody":{"id":10866,"nodeType":"Block","src":"4497:67:73","statements":[{"expression":{"id":10864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10860,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10852,"src":"4511:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10862,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10852,"src":"4546:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10861,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"4520:25:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":10863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4520:33:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4511:42:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10865,"nodeType":"ExpressionStatement","src":"4511:42:73"}]}},{"assignments":[10869],"declarations":[{"constant":false,"id":10869,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":10911,"src":"4684:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10868,"name":"uint256","nodeType":"ElementaryTypeName","src":"4684:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10874,"initialValue":{"arguments":[{"id":10872,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10852,"src":"4726:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10870,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10588,"src":"4701:7:73","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"}},"id":10871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getWstETHByStETH","nodeType":"MemberAccess","referencedDeclaration":2633,"src":"4701:24:73","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":10873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4701:32:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4684:49:73"},{"expression":{"arguments":[{"id":10883,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10852,"src":"5219:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[{"id":10879,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10588,"src":"5199:7:73","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"}],"id":10878,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5191:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10877,"name":"address","nodeType":"ElementaryTypeName","src":"5191:7:73","typeDescriptions":{}}},"id":10880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5191:16:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10876,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5183:8:73","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":10875,"name":"address","nodeType":"ElementaryTypeName","src":"5183:8:73","stateMutability":"payable","typeDescriptions":{}}},"id":10881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5183:25:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":10882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendValue","nodeType":"MemberAccess","referencedDeclaration":6227,"src":"5183:35:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$bound_to$_t_address_payable_$","typeString":"function (address payable,uint256)"}},"id":10884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5183:43:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10885,"nodeType":"ExpressionStatement","src":"5183:43:73"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10886,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10850,"src":"5241:9:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":10889,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5262:4:73","typeDescriptions":{"typeIdentifier":"t_contract$_LidoWrapping_$10913","typeString":"contract LidoWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LidoWrapping_$10913","typeString":"contract LidoWrapping"}],"id":10888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5254:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10887,"name":"address","nodeType":"ElementaryTypeName","src":"5254:7:73","typeDescriptions":{}}},"id":10890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5254:13:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5241:26:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10900,"nodeType":"IfStatement","src":"5237:92:73","trueBody":{"id":10899,"nodeType":"Block","src":"5269:60:73","statements":[{"expression":{"arguments":[{"id":10895,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10850,"src":"5300:9:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10896,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10869,"src":"5311:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10892,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10588,"src":"5283:7:73","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"}},"id":10894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":1913,"src":"5283:16:73","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":10897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5283:35:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10898,"nodeType":"ExpressionStatement","src":"5283:35:73"}]}},{"condition":{"arguments":[{"id":10902,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10854,"src":"5363:15:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10901,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"5343:19:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":10903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5343:36:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10910,"nodeType":"IfStatement","src":"5339:117:73","trueBody":{"id":10909,"nodeType":"Block","src":"5381:75:73","statements":[{"expression":{"arguments":[{"id":10905,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10854,"src":"5421:15:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10906,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10869,"src":"5438:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10904,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"5395:25:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":10907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5395:50:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10908,"nodeType":"ExpressionStatement","src":"5395:50:73"}]}}]},"functionSelector":"1089e5e3","id":10912,"implemented":true,"kind":"function","modifiers":[],"name":"stakeETHAndWrap","nodeType":"FunctionDefinition","parameters":{"id":10855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10850,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":10912,"src":"4356:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10849,"name":"address","nodeType":"ElementaryTypeName","src":"4356:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10852,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":10912,"src":"4383:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10851,"name":"uint256","nodeType":"ElementaryTypeName","src":"4383:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10854,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":10912,"src":"4407:23:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10853,"name":"uint256","nodeType":"ElementaryTypeName","src":"4407:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4346:90:73"},"returnParameters":{"id":10856,"nodeType":"ParameterList","parameters":[],"src":"4454:0:73"},"scope":10913,"src":"4322:1140:73","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":10914,"src":"1256:4208:73"}],"src":"688:4777:73"},"id":73},"contracts/relayer/ReaperWrapping.sol":{"ast":{"absolutePath":"contracts/relayer/ReaperWrapping.sol","exportedSymbols":{"ReaperWrapping":[11112]},"id":11113,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10915,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:74"},{"id":10916,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:74"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":10917,"nodeType":"ImportDirective","scope":11113,"sourceUnit":6338,"src":"747:77:74","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol","id":10918,"nodeType":"ImportDirective","scope":11113,"sourceUnit":789,"src":"826:82:74","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":10919,"nodeType":"ImportDirective","scope":11113,"sourceUnit":10571,"src":"910:35:74","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":10921,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":10570,"src":"1212:19:74","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$10570","typeString":"contract IBaseRelayerLibrary"}},"id":10922,"nodeType":"InheritanceSpecifier","src":"1212:19:74"}],"contractDependencies":[8042,10570],"contractKind":"contract","documentation":{"id":10920,"nodeType":"StructuredDocumentation","src":"947:228:74","text":" @title ReaperWrapping\n @notice Allows users to wrap and unwrap Reapers's rfTokens into their underlying main tokens\n @dev All functions must be payable so that it can be called as part of a multicall involving ETH"},"fullyImplemented":false,"id":11112,"linearizedBaseContracts":[11112,10570,8042],"name":"ReaperWrapping","nodeType":"ContractDefinition","nodes":[{"id":10925,"libraryName":{"id":10923,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":6337,"src":"1244:7:74","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$6337","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1238:34:74","typeName":{"id":10924,"name":"address","nodeType":"ElementaryTypeName","src":"1256:15:74","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"body":{"id":11012,"nodeType":"Block","src":"1479:1020:74","statements":[{"condition":{"arguments":[{"id":10939,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10933,"src":"1513:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10938,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"1493:19:74","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":10940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1493:27:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10948,"nodeType":"IfStatement","src":"1489:100:74","trueBody":{"id":10947,"nodeType":"Block","src":"1522:67:74","statements":[{"expression":{"id":10945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10941,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10933,"src":"1536:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10943,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10933,"src":"1571:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10942,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"1545:25:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":10944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1545:33:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1536:42:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10946,"nodeType":"ExpressionStatement","src":"1536:42:74"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10949,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10929,"src":"1780:6:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":10952,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1798:4:74","typeDescriptions":{"typeIdentifier":"t_contract$_ReaperWrapping_$11112","typeString":"contract ReaperWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReaperWrapping_$11112","typeString":"contract ReaperWrapping"}],"id":10951,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1790:7:74","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10950,"name":"address","nodeType":"ElementaryTypeName","src":"1790:7:74","typeDescriptions":{}}},"id":10953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1790:13:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1780:23:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10970,"nodeType":"IfStatement","src":"1776:155:74","trueBody":{"id":10969,"nodeType":"Block","src":"1805:126:74","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10956,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10929,"src":"1827:6:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10957,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1837:3:74","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1837:10:74","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1827:20:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":10960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1849:18:74","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":10955,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1819:7:74","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1819:49:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10962,"nodeType":"ExpressionStatement","src":"1819:49:74"},{"expression":{"arguments":[{"id":10964,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10929,"src":"1893:6:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10965,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10927,"src":"1901:10:74","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$788","typeString":"contract IReaperTokenVault"}},{"id":10966,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10933,"src":"1913:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IReaperTokenVault_$788","typeString":"contract IReaperTokenVault"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10963,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10537,"src":"1882:10:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$1964_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":10967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1882:38:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10968,"nodeType":"ExpressionStatement","src":"1882:38:74"}]}},{"assignments":[10972],"declarations":[{"constant":false,"id":10972,"mutability":"mutable","name":"underlyingToken","nodeType":"VariableDeclaration","scope":11012,"src":"1941:22:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":10971,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1941:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"id":10978,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10974,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10927,"src":"1973:10:74","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$788","typeString":"contract IReaperTokenVault"}},"id":10975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":763,"src":"1973:16:74","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":10976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1973:18:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10973,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"1966:6:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":10977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1966:26:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1941:51:74"},{"expression":{"arguments":[{"id":10982,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10933,"src":"2087:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10979,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10927,"src":"2067:10:74","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$788","typeString":"contract IReaperTokenVault"}},"id":10981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":781,"src":"2067:19:74","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":10983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2067:27:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10984,"nodeType":"ExpressionStatement","src":"2067:27:74"},{"assignments":[10986],"declarations":[{"constant":false,"id":10986,"mutability":"mutable","name":"withdrawnAmount","nodeType":"VariableDeclaration","scope":11012,"src":"2183:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10985,"name":"uint256","nodeType":"ElementaryTypeName","src":"2183:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10994,"initialValue":{"arguments":[{"arguments":[{"id":10991,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2243:4:74","typeDescriptions":{"typeIdentifier":"t_contract$_ReaperWrapping_$11112","typeString":"contract ReaperWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReaperWrapping_$11112","typeString":"contract ReaperWrapping"}],"id":10990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2235:7:74","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10989,"name":"address","nodeType":"ElementaryTypeName","src":"2235:7:74","typeDescriptions":{}}},"id":10992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2235:13:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10987,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10972,"src":"2209:15:74","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":10988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1903,"src":"2209:25:74","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":10993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2209:40:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2183:66:74"},{"expression":{"arguments":[{"id":10998,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10931,"src":"2329:9:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10999,"name":"withdrawnAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10986,"src":"2340:15:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10995,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10972,"src":"2304:15:74","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":10997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":1913,"src":"2304:24:74","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":11000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2304:52:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11001,"nodeType":"ExpressionStatement","src":"2304:52:74"},{"condition":{"arguments":[{"id":11003,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10935,"src":"2391:15:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11002,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"2371:19:74","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2371:36:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11011,"nodeType":"IfStatement","src":"2367:126:74","trueBody":{"id":11010,"nodeType":"Block","src":"2409:84:74","statements":[{"expression":{"arguments":[{"id":11006,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10935,"src":"2449:15:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11007,"name":"withdrawnAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10986,"src":"2466:15:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11005,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"2423:25:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":11008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2423:59:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11009,"nodeType":"ExpressionStatement","src":"2423:59:74"}]}}]},"functionSelector":"d293f290","id":11013,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapReaperVaultToken","nodeType":"FunctionDefinition","parameters":{"id":10936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10927,"mutability":"mutable","name":"vaultToken","nodeType":"VariableDeclaration","scope":11013,"src":"1319:28:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$788","typeString":"contract IReaperTokenVault"},"typeName":{"id":10926,"name":"IReaperTokenVault","nodeType":"UserDefinedTypeName","referencedDeclaration":788,"src":"1319:17:74","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$788","typeString":"contract IReaperTokenVault"}},"visibility":"internal"},{"constant":false,"id":10929,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":11013,"src":"1357:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10928,"name":"address","nodeType":"ElementaryTypeName","src":"1357:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10931,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11013,"src":"1381:17:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10930,"name":"address","nodeType":"ElementaryTypeName","src":"1381:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10933,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11013,"src":"1408:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10932,"name":"uint256","nodeType":"ElementaryTypeName","src":"1408:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10935,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":11013,"src":"1432:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10934,"name":"uint256","nodeType":"ElementaryTypeName","src":"1432:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1309:152:74"},"returnParameters":{"id":10937,"nodeType":"ParameterList","parameters":[],"src":"1479:0:74"},"scope":11112,"src":"1278:1221:74","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":11110,"nodeType":"Block","src":"2704:1111:74","statements":[{"condition":{"arguments":[{"id":11027,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11021,"src":"2738:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11026,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"2718:19:74","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2718:27:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11036,"nodeType":"IfStatement","src":"2714:100:74","trueBody":{"id":11035,"nodeType":"Block","src":"2747:67:74","statements":[{"expression":{"id":11033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11029,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11021,"src":"2761:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11031,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11021,"src":"2796:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11030,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"2770:25:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":11032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2770:33:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2761:42:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11034,"nodeType":"ExpressionStatement","src":"2761:42:74"}]}},{"assignments":[11038],"declarations":[{"constant":false,"id":11038,"mutability":"mutable","name":"underlyingToken","nodeType":"VariableDeclaration","scope":11110,"src":"2824:22:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":11037,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2824:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"id":11044,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11040,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11015,"src":"2856:10:74","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$788","typeString":"contract IReaperTokenVault"}},"id":11041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":763,"src":"2856:16:74","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":11042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2856:18:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11039,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"2849:6:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":11043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2849:26:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"2824:51:74"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11045,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11017,"src":"3065:6:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":11048,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3083:4:74","typeDescriptions":{"typeIdentifier":"t_contract$_ReaperWrapping_$11112","typeString":"contract ReaperWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReaperWrapping_$11112","typeString":"contract ReaperWrapping"}],"id":11047,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3075:7:74","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11046,"name":"address","nodeType":"ElementaryTypeName","src":"3075:7:74","typeDescriptions":{}}},"id":11049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3075:13:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3065:23:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11066,"nodeType":"IfStatement","src":"3061:160:74","trueBody":{"id":11065,"nodeType":"Block","src":"3090:131:74","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11052,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11017,"src":"3112:6:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11053,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3122:3:74","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3122:10:74","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3112:20:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":11056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3134:18:74","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":11051,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3104:7:74","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3104:49:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11058,"nodeType":"ExpressionStatement","src":"3104:49:74"},{"expression":{"arguments":[{"id":11060,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11017,"src":"3178:6:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11061,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11038,"src":"3186:15:74","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},{"id":11062,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11021,"src":"3203:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11059,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10537,"src":"3167:10:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$1964_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":11063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3167:43:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11064,"nodeType":"ExpressionStatement","src":"3167:43:74"}]}},{"expression":{"arguments":[{"arguments":[{"id":11072,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11015,"src":"3340:10:74","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$788","typeString":"contract IReaperTokenVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IReaperTokenVault_$788","typeString":"contract IReaperTokenVault"}],"id":11071,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3332:7:74","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11070,"name":"address","nodeType":"ElementaryTypeName","src":"3332:7:74","typeDescriptions":{}}},"id":11073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3332:19:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11074,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11021,"src":"3353:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11067,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11038,"src":"3308:15:74","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":11069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":1933,"src":"3308:23:74","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":11075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3308:52:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11076,"nodeType":"ExpressionStatement","src":"3308:52:74"},{"expression":{"arguments":[{"id":11080,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11021,"src":"3435:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11077,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11015,"src":"3416:10:74","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$788","typeString":"contract IReaperTokenVault"}},"id":11079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":775,"src":"3416:18:74","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":11081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3416:26:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11082,"nodeType":"ExpressionStatement","src":"3416:26:74"},{"assignments":[11084],"declarations":[{"constant":false,"id":11084,"mutability":"mutable","name":"sharesGained","nodeType":"VariableDeclaration","scope":11110,"src":"3518:20:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11083,"name":"uint256","nodeType":"ElementaryTypeName","src":"3518:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11092,"initialValue":{"arguments":[{"arguments":[{"id":11089,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3570:4:74","typeDescriptions":{"typeIdentifier":"t_contract$_ReaperWrapping_$11112","typeString":"contract ReaperWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReaperWrapping_$11112","typeString":"contract ReaperWrapping"}],"id":11088,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3562:7:74","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11087,"name":"address","nodeType":"ElementaryTypeName","src":"3562:7:74","typeDescriptions":{}}},"id":11090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3562:13:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11085,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11015,"src":"3541:10:74","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$788","typeString":"contract IReaperTokenVault"}},"id":11086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1903,"src":"3541:20:74","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":11091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3541:35:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3518:58:74"},{"expression":{"arguments":[{"id":11096,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11019,"src":"3651:9:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11097,"name":"sharesGained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11084,"src":"3662:12:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11093,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11015,"src":"3631:10:74","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$788","typeString":"contract IReaperTokenVault"}},"id":11095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":1913,"src":"3631:19:74","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":11098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3631:44:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11099,"nodeType":"ExpressionStatement","src":"3631:44:74"},{"condition":{"arguments":[{"id":11101,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11023,"src":"3710:15:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11100,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"3690:19:74","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3690:36:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11109,"nodeType":"IfStatement","src":"3686:123:74","trueBody":{"id":11108,"nodeType":"Block","src":"3728:81:74","statements":[{"expression":{"arguments":[{"id":11104,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11023,"src":"3768:15:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11105,"name":"sharesGained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11084,"src":"3785:12:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11103,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"3742:25:74","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":11106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3742:56:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11107,"nodeType":"ExpressionStatement","src":"3742:56:74"}]}}]},"functionSelector":"e8210e3c","id":11111,"implemented":true,"kind":"function","modifiers":[],"name":"wrapReaperVaultToken","nodeType":"FunctionDefinition","parameters":{"id":11024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11015,"mutability":"mutable","name":"vaultToken","nodeType":"VariableDeclaration","scope":11111,"src":"2544:28:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$788","typeString":"contract IReaperTokenVault"},"typeName":{"id":11014,"name":"IReaperTokenVault","nodeType":"UserDefinedTypeName","referencedDeclaration":788,"src":"2544:17:74","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$788","typeString":"contract IReaperTokenVault"}},"visibility":"internal"},{"constant":false,"id":11017,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":11111,"src":"2582:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11016,"name":"address","nodeType":"ElementaryTypeName","src":"2582:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11019,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11111,"src":"2606:17:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11018,"name":"address","nodeType":"ElementaryTypeName","src":"2606:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11021,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11111,"src":"2633:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11020,"name":"uint256","nodeType":"ElementaryTypeName","src":"2633:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11023,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":11111,"src":"2657:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11022,"name":"uint256","nodeType":"ElementaryTypeName","src":"2657:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2534:152:74"},"returnParameters":{"id":11025,"nodeType":"ParameterList","parameters":[],"src":"2704:0:74"},"scope":11112,"src":"2505:1310:74","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":11113,"src":"1176:2641:74"}],"src":"688:3130:74"},"id":74},"contracts/relayer/UnbuttonWrapping.sol":{"ast":{"absolutePath":"contracts/relayer/UnbuttonWrapping.sol","exportedSymbols":{"UnbuttonWrapping":[11276]},"id":11277,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11114,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:75"},{"id":11115,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:75"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":11116,"nodeType":"ImportDirective","scope":11277,"sourceUnit":1965,"src":"747:87:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol","id":11117,"nodeType":"ImportDirective","scope":11277,"sourceUnit":798,"src":"835:79:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":11118,"nodeType":"ImportDirective","scope":11277,"sourceUnit":6338,"src":"916:77:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":11119,"nodeType":"ImportDirective","scope":11277,"sourceUnit":10571,"src":"995:35:75","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":11121,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":10570,"src":"1674:19:75","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$10570","typeString":"contract IBaseRelayerLibrary"}},"id":11122,"nodeType":"InheritanceSpecifier","src":"1674:19:75"}],"contractDependencies":[8042,10570],"contractKind":"contract","documentation":{"id":11120,"nodeType":"StructuredDocumentation","src":"1032:603:75","text":" @title UnbuttonWrapping\n @author @aalavandhan1984 (eng@fragments.org)\n @notice Allows users to wrap and unwrap any rebasing elastic balance token into a\n a non-rebasing static balance version using the Unbutton wrapper.\n @dev All functions must be payable so that it can be called as part of a multicall involving ETH.\n The rebasing token to be wrapped is called the \"underlying\" token.\n The wrapped non-rebasing token is called the \"wrapped\" token.\n Learn more: https://github.com/buttonwood-protocol/button-wrappers/blob/main/contracts/UnbuttonToken.sol"},"fullyImplemented":false,"id":11276,"linearizedBaseContracts":[11276,10570,8042],"name":"UnbuttonWrapping","nodeType":"ContractDefinition","nodes":[{"id":11125,"libraryName":{"id":11123,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":6337,"src":"1706:7:75","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$6337","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1700:34:75","typeName":{"id":11124,"name":"address","nodeType":"ElementaryTypeName","src":"1718:15:75","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"body":{"id":11208,"nodeType":"Block","src":"2226:805:75","statements":[{"condition":{"arguments":[{"id":11140,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11134,"src":"2260:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11139,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"2240:19:75","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2240:28:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11149,"nodeType":"IfStatement","src":"2236:103:75","trueBody":{"id":11148,"nodeType":"Block","src":"2270:69:75","statements":[{"expression":{"id":11146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11142,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11134,"src":"2284:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11144,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11134,"src":"2320:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11143,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"2294:25:75","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":11145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2294:34:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2284:44:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11147,"nodeType":"ExpressionStatement","src":"2284:44:75"}]}},{"assignments":[11151],"declarations":[{"constant":false,"id":11151,"mutability":"mutable","name":"underlyingToken","nodeType":"VariableDeclaration","scope":11208,"src":"2349:22:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":11150,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2349:6:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"id":11157,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11153,"name":"wrapperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11128,"src":"2381:12:75","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$797","typeString":"contract IUnbuttonToken"}},"id":11154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":721,"src":"2381:23:75","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":11155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2381:25:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11152,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"2374:6:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":11156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2374:33:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"2349:58:75"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11158,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11130,"src":"2597:6:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":11161,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2615:4:75","typeDescriptions":{"typeIdentifier":"t_contract$_UnbuttonWrapping_$11276","typeString":"contract UnbuttonWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UnbuttonWrapping_$11276","typeString":"contract UnbuttonWrapping"}],"id":11160,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2607:7:75","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11159,"name":"address","nodeType":"ElementaryTypeName","src":"2607:7:75","typeDescriptions":{}}},"id":11162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2607:13:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2597:23:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11179,"nodeType":"IfStatement","src":"2593:161:75","trueBody":{"id":11178,"nodeType":"Block","src":"2622:132:75","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11165,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11130,"src":"2644:6:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11166,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2654:3:75","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2654:10:75","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2644:20:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":11169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2666:18:75","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":11164,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2636:7:75","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2636:49:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11171,"nodeType":"ExpressionStatement","src":"2636:49:75"},{"expression":{"arguments":[{"id":11173,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11130,"src":"2710:6:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11174,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11151,"src":"2718:15:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},{"id":11175,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11134,"src":"2735:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11172,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10537,"src":"2699:10:75","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$1964_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":11176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2699:44:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11177,"nodeType":"ExpressionStatement","src":"2699:44:75"}]}},{"expression":{"arguments":[{"arguments":[{"id":11185,"name":"wrapperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11128,"src":"2796:12:75","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$797","typeString":"contract IUnbuttonToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IUnbuttonToken_$797","typeString":"contract IUnbuttonToken"}],"id":11184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2788:7:75","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11183,"name":"address","nodeType":"ElementaryTypeName","src":"2788:7:75","typeDescriptions":{}}},"id":11186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2788:21:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11187,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11134,"src":"2811:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11180,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11151,"src":"2764:15:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":11182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":1933,"src":"2764:23:75","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":11188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2764:55:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11189,"nodeType":"ExpressionStatement","src":"2764:55:75"},{"assignments":[11191],"declarations":[{"constant":false,"id":11191,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":11208,"src":"2829:18:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11190,"name":"uint256","nodeType":"ElementaryTypeName","src":"2829:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11197,"initialValue":{"arguments":[{"id":11194,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11132,"src":"2874:9:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11195,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11134,"src":"2885:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11192,"name":"wrapperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11128,"src":"2850:12:75","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$797","typeString":"contract IUnbuttonToken"}},"id":11193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"depositFor","nodeType":"MemberAccess","referencedDeclaration":683,"src":"2850:23:75","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) external returns (uint256)"}},"id":11196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2850:43:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2829:64:75"},{"condition":{"arguments":[{"id":11199,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11136,"src":"2928:15:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11198,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"2908:19:75","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2908:36:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11207,"nodeType":"IfStatement","src":"2904:121:75","trueBody":{"id":11206,"nodeType":"Block","src":"2946:79:75","statements":[{"expression":{"arguments":[{"id":11202,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11136,"src":"2986:15:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11203,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11191,"src":"3003:10:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11201,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"2960:25:75","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":11204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2960:54:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11205,"nodeType":"ExpressionStatement","src":"2960:54:75"}]}}]},"documentation":{"id":11126,"nodeType":"StructuredDocumentation","src":"1740:285:75","text":"@param wrapperToken The address of the wrapper.\n @param sender The address of sender.\n @param sender The address of recepient.\n @param uAmount The underling token amount to be deposited into the wrapper.\n @param outputReference Chained output reference."},"functionSelector":"abf6d399","id":11209,"implemented":true,"kind":"function","modifiers":[],"name":"wrapUnbuttonToken","nodeType":"FunctionDefinition","parameters":{"id":11137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11128,"mutability":"mutable","name":"wrapperToken","nodeType":"VariableDeclaration","scope":11209,"src":"2066:27:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$797","typeString":"contract IUnbuttonToken"},"typeName":{"id":11127,"name":"IUnbuttonToken","nodeType":"UserDefinedTypeName","referencedDeclaration":797,"src":"2066:14:75","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$797","typeString":"contract IUnbuttonToken"}},"visibility":"internal"},{"constant":false,"id":11130,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":11209,"src":"2103:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11129,"name":"address","nodeType":"ElementaryTypeName","src":"2103:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11132,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11209,"src":"2127:17:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11131,"name":"address","nodeType":"ElementaryTypeName","src":"2127:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11134,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":11209,"src":"2154:15:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11133,"name":"uint256","nodeType":"ElementaryTypeName","src":"2154:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11136,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":11209,"src":"2179:23:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11135,"name":"uint256","nodeType":"ElementaryTypeName","src":"2179:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2056:152:75"},"returnParameters":{"id":11138,"nodeType":"ParameterList","parameters":[],"src":"2226:0:75"},"scope":11276,"src":"2030:1001:75","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":11274,"nodeType":"Block","src":"3526:676:75","statements":[{"condition":{"arguments":[{"id":11224,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11218,"src":"3560:6:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11223,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"3540:19:75","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3540:27:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11233,"nodeType":"IfStatement","src":"3536:100:75","trueBody":{"id":11232,"nodeType":"Block","src":"3569:67:75","statements":[{"expression":{"id":11230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11226,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11218,"src":"3583:6:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11228,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11218,"src":"3618:6:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11227,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"3592:25:75","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":11229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3592:33:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3583:42:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11231,"nodeType":"ExpressionStatement","src":"3583:42:75"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11234,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11214,"src":"3830:6:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":11237,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3848:4:75","typeDescriptions":{"typeIdentifier":"t_contract$_UnbuttonWrapping_$11276","typeString":"contract UnbuttonWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UnbuttonWrapping_$11276","typeString":"contract UnbuttonWrapping"}],"id":11236,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3840:7:75","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11235,"name":"address","nodeType":"ElementaryTypeName","src":"3840:7:75","typeDescriptions":{}}},"id":11238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3840:13:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3830:23:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11255,"nodeType":"IfStatement","src":"3826:157:75","trueBody":{"id":11254,"nodeType":"Block","src":"3855:128:75","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11241,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11214,"src":"3877:6:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11242,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3887:3:75","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3887:10:75","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3877:20:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":11245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3899:18:75","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":11240,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3869:7:75","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3869:49:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11247,"nodeType":"ExpressionStatement","src":"3869:49:75"},{"expression":{"arguments":[{"id":11249,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11214,"src":"3943:6:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11250,"name":"wrapperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11212,"src":"3951:12:75","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$797","typeString":"contract IUnbuttonToken"}},{"id":11251,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11218,"src":"3965:6:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IUnbuttonToken_$797","typeString":"contract IUnbuttonToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11248,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10537,"src":"3932:10:75","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$1964_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":11252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3932:40:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11253,"nodeType":"ExpressionStatement","src":"3932:40:75"}]}},{"assignments":[11257],"declarations":[{"constant":false,"id":11257,"mutability":"mutable","name":"withdrawnUAmount","nodeType":"VariableDeclaration","scope":11274,"src":"3993:24:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11256,"name":"uint256","nodeType":"ElementaryTypeName","src":"3993:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11263,"initialValue":{"arguments":[{"id":11260,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11216,"src":"4040:9:75","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11261,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11218,"src":"4051:6:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11258,"name":"wrapperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11212,"src":"4020:12:75","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$797","typeString":"contract IUnbuttonToken"}},"id":11259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burnTo","nodeType":"MemberAccess","referencedDeclaration":651,"src":"4020:19:75","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) external returns (uint256)"}},"id":11262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4020:38:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3993:65:75"},{"condition":{"arguments":[{"id":11265,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11220,"src":"4093:15:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11264,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"4073:19:75","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4073:36:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11273,"nodeType":"IfStatement","src":"4069:127:75","trueBody":{"id":11272,"nodeType":"Block","src":"4111:85:75","statements":[{"expression":{"arguments":[{"id":11268,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11220,"src":"4151:15:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11269,"name":"withdrawnUAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11257,"src":"4168:16:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11267,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"4125:25:75","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":11270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4125:60:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11271,"nodeType":"ExpressionStatement","src":"4125:60:75"}]}}]},"documentation":{"id":11210,"nodeType":"StructuredDocumentation","src":"3037:287:75","text":"@param wrapperToken The address of the wrapper.\n @param sender The address of sender.\n @param sender The address of recepient.\n @param amount The amount of wrapped tokens to be burnt for underlying tokens.\n @param outputReference Chained output reference."},"functionSelector":"611b90dd","id":11275,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapUnbuttonToken","nodeType":"FunctionDefinition","parameters":{"id":11221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11212,"mutability":"mutable","name":"wrapperToken","nodeType":"VariableDeclaration","scope":11275,"src":"3367:27:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$797","typeString":"contract IUnbuttonToken"},"typeName":{"id":11211,"name":"IUnbuttonToken","nodeType":"UserDefinedTypeName","referencedDeclaration":797,"src":"3367:14:75","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$797","typeString":"contract IUnbuttonToken"}},"visibility":"internal"},{"constant":false,"id":11214,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":11275,"src":"3404:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11213,"name":"address","nodeType":"ElementaryTypeName","src":"3404:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11216,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11275,"src":"3428:17:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11215,"name":"address","nodeType":"ElementaryTypeName","src":"3428:7:75","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11218,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11275,"src":"3455:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11217,"name":"uint256","nodeType":"ElementaryTypeName","src":"3455:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11220,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":11275,"src":"3479:23:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11219,"name":"uint256","nodeType":"ElementaryTypeName","src":"3479:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3357:151:75"},"returnParameters":{"id":11222,"nodeType":"ParameterList","parameters":[],"src":"3526:0:75"},"scope":11276,"src":"3329:873:75","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":11277,"src":"1636:2568:75"}],"src":"688:3517:75"},"id":75},"contracts/relayer/VaultActions.sol":{"ast":{"absolutePath":"contracts/relayer/VaultActions.sol","exportedSymbols":{"VaultActions":[12166]},"id":12167,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11278,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:76"},{"id":11279,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:76"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":11280,"nodeType":"ImportDirective","scope":12167,"sourceUnit":3372,"src":"747:65:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol","id":11281,"nodeType":"ImportDirective","scope":12167,"sourceUnit":1194,"src":"813:87:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","id":11282,"nodeType":"ImportDirective","scope":12167,"sourceUnit":4019,"src":"902:77:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol","id":11283,"nodeType":"ImportDirective","scope":12167,"sourceUnit":4139,"src":"980:77:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","id":11284,"nodeType":"ImportDirective","scope":12167,"sourceUnit":6171,"src":"1058:66:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":11285,"nodeType":"ImportDirective","scope":12167,"sourceUnit":10571,"src":"1126:35:76","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":11287,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":10570,"src":"1580:19:76","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$10570","typeString":"contract IBaseRelayerLibrary"}},"id":11288,"nodeType":"InheritanceSpecifier","src":"1580:19:76"}],"contractDependencies":[8042,10570],"contractKind":"contract","documentation":{"id":11286,"nodeType":"StructuredDocumentation","src":"1163:382:76","text":" @title VaultActions\n @notice Allows users to call the core functions on the Balancer Vault (swaps/joins/exits/user balance management)\n @dev\n Since the relayer is not expected to hold user funds, we expect the user to be the recipient of any token transfers\n from the Vault.\n All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":12166,"linearizedBaseContracts":[12166,10570,8042],"name":"VaultActions","nodeType":"ContractDefinition","nodes":[{"id":11291,"libraryName":{"id":11289,"name":"Math","nodeType":"UserDefinedTypeName","referencedDeclaration":6170,"src":"1612:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_Math_$6170","typeString":"library Math"}},"nodeType":"UsingForDirective","src":"1606:23:76","typeName":{"id":11290,"name":"uint256","nodeType":"ElementaryTypeName","src":"1621:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"canonicalName":"VaultActions.OutputReference","id":11296,"members":[{"constant":false,"id":11293,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":11296,"src":"1668:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11292,"name":"uint256","nodeType":"ElementaryTypeName","src":"1668:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11295,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":11296,"src":"1691:11:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11294,"name":"uint256","nodeType":"ElementaryTypeName","src":"1691:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"OutputReference","nodeType":"StructDefinition","scope":12166,"src":"1635:74:76","visibility":"public"},{"body":{"id":11366,"nodeType":"Block","src":"1948:470:76","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11312,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11300,"src":"1966:5:76","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_calldata_ptr","typeString":"struct IVault.FundManagement calldata"}},"id":11313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":3270,"src":"1966:12:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11314,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1982:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1982:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1966:26:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11317,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11300,"src":"1996:5:76","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_calldata_ptr","typeString":"struct IVault.FundManagement calldata"}},"id":11318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":3270,"src":"1996:12:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":11321,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2020:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_VaultActions_$12166","typeString":"contract VaultActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultActions_$12166","typeString":"contract VaultActions"}],"id":11320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2012:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11319,"name":"address","nodeType":"ElementaryTypeName","src":"2012:7:76","typeDescriptions":{}}},"id":11322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2012:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1996:29:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1966:59:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":11325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2027:18:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":11311,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1958:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1958:88:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11327,"nodeType":"ExpressionStatement","src":"1958:88:76"},{"condition":{"arguments":[{"expression":{"id":11329,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11298,"src":"2081:10:76","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3222_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":11330,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3219,"src":"2081:17:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11328,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"2061:19:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2061:38:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11342,"nodeType":"IfStatement","src":"2057:133:76","trueBody":{"id":11341,"nodeType":"Block","src":"2101:89:76","statements":[{"expression":{"id":11339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11332,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11298,"src":"2115:10:76","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3222_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":11334,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3219,"src":"2115:17:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":11336,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11298,"src":"2161:10:76","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3222_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":11337,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3219,"src":"2161:17:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11335,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"2135:25:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":11338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2135:44:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2115:64:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11340,"nodeType":"ExpressionStatement","src":"2115:64:76"}]}},{"assignments":[11344],"declarations":[{"constant":false,"id":11344,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":11366,"src":"2200:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11343,"name":"uint256","nodeType":"ElementaryTypeName","src":"2200:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11355,"initialValue":{"arguments":[{"id":11350,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11298,"src":"2249:10:76","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3222_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},{"id":11351,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11300,"src":"2261:5:76","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_calldata_ptr","typeString":"struct IVault.FundManagement calldata"}},{"id":11352,"name":"limit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11302,"src":"2268:5:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11353,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11304,"src":"2275:8:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SingleSwap_$3222_memory_ptr","typeString":"struct IVault.SingleSwap memory"},{"typeIdentifier":"t_struct$_FundManagement_$3277_calldata_ptr","typeString":"struct IVault.FundManagement calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SingleSwap_$3222_memory_ptr","typeString":"struct IVault.SingleSwap memory"},{"typeIdentifier":"t_struct$_FundManagement_$3277_calldata_ptr","typeString":"struct IVault.FundManagement calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11345,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10514,"src":"2217:8:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3371_$","typeString":"function () view returns (contract IVault)"}},"id":11346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2217:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":11347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3209,"src":"2217:15:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_SingleSwap_$3222_memory_ptr_$_t_struct$_FundManagement_$3277_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct IVault.SingleSwap memory,struct IVault.FundManagement memory,uint256,uint256) payable external returns (uint256)"}},"id":11349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":11348,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11306,"src":"2241:5:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2217:31:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_SingleSwap_$3222_memory_ptr_$_t_struct$_FundManagement_$3277_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$value","typeString":"function (struct IVault.SingleSwap memory,struct IVault.FundManagement memory,uint256,uint256) payable external returns (uint256)"}},"id":11354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2217:67:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2200:84:76"},{"condition":{"arguments":[{"id":11357,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11308,"src":"2319:15:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11356,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"2299:19:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2299:36:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11365,"nodeType":"IfStatement","src":"2295:117:76","trueBody":{"id":11364,"nodeType":"Block","src":"2337:75:76","statements":[{"expression":{"arguments":[{"id":11360,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11308,"src":"2377:15:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11361,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11344,"src":"2394:6:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11359,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"2351:25:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":11362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2351:50:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11363,"nodeType":"ExpressionStatement","src":"2351:50:76"}]}}]},"functionSelector":"2e6272ea","id":11367,"implemented":true,"kind":"function","modifiers":[],"name":"swap","nodeType":"FunctionDefinition","parameters":{"id":11309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11298,"mutability":"mutable","name":"singleSwap","nodeType":"VariableDeclaration","scope":11367,"src":"1738:35:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3222_memory_ptr","typeString":"struct IVault.SingleSwap"},"typeName":{"id":11297,"name":"IVault.SingleSwap","nodeType":"UserDefinedTypeName","referencedDeclaration":3222,"src":"1738:17:76","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3222_storage_ptr","typeString":"struct IVault.SingleSwap"}},"visibility":"internal"},{"constant":false,"id":11300,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":11367,"src":"1783:36:76","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_calldata_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":11299,"name":"IVault.FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3277,"src":"1783:21:76","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"},{"constant":false,"id":11302,"mutability":"mutable","name":"limit","nodeType":"VariableDeclaration","scope":11367,"src":"1829:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11301,"name":"uint256","nodeType":"ElementaryTypeName","src":"1829:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11304,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":11367,"src":"1852:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11303,"name":"uint256","nodeType":"ElementaryTypeName","src":"1852:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11306,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":11367,"src":"1878:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11305,"name":"uint256","nodeType":"ElementaryTypeName","src":"1878:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11308,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":11367,"src":"1901:23:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11307,"name":"uint256","nodeType":"ElementaryTypeName","src":"1901:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1728:202:76"},"returnParameters":{"id":11310,"nodeType":"ParameterList","parameters":[],"src":"1948:0:76"},"scope":12166,"src":"1715:703:76","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":11498,"nodeType":"Block","src":"2757:1192:76","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11391,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11377,"src":"2775:5:76","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_calldata_ptr","typeString":"struct IVault.FundManagement calldata"}},"id":11392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":3270,"src":"2775:12:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11393,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2791:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2791:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2775:26:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11396,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11377,"src":"2805:5:76","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_calldata_ptr","typeString":"struct IVault.FundManagement calldata"}},"id":11397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":3270,"src":"2805:12:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":11400,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2829:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_VaultActions_$12166","typeString":"contract VaultActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultActions_$12166","typeString":"contract VaultActions"}],"id":11399,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2821:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11398,"name":"address","nodeType":"ElementaryTypeName","src":"2821:7:76","typeDescriptions":{}}},"id":11401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2821:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2805:29:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2775:59:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":11404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2836:18:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":11390,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2767:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2767:88:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11406,"nodeType":"ExpressionStatement","src":"2767:88:76"},{"body":{"id":11439,"nodeType":"Block","src":"2909:187:76","statements":[{"assignments":[11419],"declarations":[{"constant":false,"id":11419,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11439,"src":"2923:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11418,"name":"uint256","nodeType":"ElementaryTypeName","src":"2923:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11424,"initialValue":{"expression":{"baseExpression":{"id":11420,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11372,"src":"2940:5:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},"id":11422,"indexExpression":{"id":11421,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11408,"src":"2946:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2940:8:76","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3255_memory_ptr","typeString":"struct IVault.BatchSwapStep memory"}},"id":11423,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3252,"src":"2940:15:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2923:32:76"},{"condition":{"arguments":[{"id":11426,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11419,"src":"2993:6:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11425,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"2973:19:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2973:27:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11438,"nodeType":"IfStatement","src":"2969:117:76","trueBody":{"id":11437,"nodeType":"Block","src":"3002:84:76","statements":[{"expression":{"id":11435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":11428,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11372,"src":"3020:5:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},"id":11430,"indexExpression":{"id":11429,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11408,"src":"3026:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3020:8:76","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3255_memory_ptr","typeString":"struct IVault.BatchSwapStep memory"}},"id":11431,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3252,"src":"3020:15:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11433,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11419,"src":"3064:6:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11432,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"3038:25:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":11434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3038:33:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3020:51:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11436,"nodeType":"ExpressionStatement","src":"3020:51:76"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11411,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11408,"src":"2886:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11412,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11372,"src":"2890:5:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},"id":11413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2890:12:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2886:16:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11440,"initializationExpression":{"assignments":[11408],"declarations":[{"constant":false,"id":11408,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":11440,"src":"2871:9:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11407,"name":"uint256","nodeType":"ElementaryTypeName","src":"2871:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11410,"initialValue":{"hexValue":"30","id":11409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2883:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2871:13:76"},"loopExpression":{"expression":{"id":11416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2904:3:76","subExpression":{"id":11415,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11408,"src":"2906:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11417,"nodeType":"ExpressionStatement","src":"2904:3:76"},"nodeType":"ForStatement","src":"2866:230:76"},{"assignments":[11445],"declarations":[{"constant":false,"id":11445,"mutability":"mutable","name":"results","nodeType":"VariableDeclaration","scope":11498,"src":"3106:23:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":11443,"name":"int256","nodeType":"ElementaryTypeName","src":"3106:6:76","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":11444,"nodeType":"ArrayTypeName","src":"3106:8:76","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"id":11458,"initialValue":{"arguments":[{"id":11451,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11369,"src":"3169:4:76","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"}},{"id":11452,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11372,"src":"3175:5:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},{"id":11453,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11375,"src":"3182:6:76","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_calldata_ptr","typeString":"contract IAsset[] calldata"}},{"id":11454,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11377,"src":"3190:5:76","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_calldata_ptr","typeString":"struct IVault.FundManagement calldata"}},{"id":11455,"name":"limits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11380,"src":"3197:6:76","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_calldata_ptr","typeString":"int256[] calldata"}},{"id":11456,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11382,"src":"3205:8:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"},{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"},{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_calldata_ptr","typeString":"contract IAsset[] calldata"},{"typeIdentifier":"t_struct$_FundManagement_$3277_calldata_ptr","typeString":"struct IVault.FundManagement calldata"},{"typeIdentifier":"t_array$_t_int256_$dyn_calldata_ptr","typeString":"int256[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"},{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"},{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_calldata_ptr","typeString":"contract IAsset[] calldata"},{"typeIdentifier":"t_struct$_FundManagement_$3277_calldata_ptr","typeString":"struct IVault.FundManagement calldata"},{"typeIdentifier":"t_array$_t_int256_$dyn_calldata_ptr","typeString":"int256[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11446,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10514,"src":"3132:8:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3371_$","typeString":"function () view returns (contract IVault)"}},"id":11447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3132:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":11448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"batchSwap","nodeType":"MemberAccess","referencedDeclaration":3244,"src":"3132:20:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_enum$_SwapKind_$3195_$_t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr_$_t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr_$_t_struct$_FundManagement_$3277_memory_ptr_$_t_array$_t_int256_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_int256_$dyn_memory_ptr_$","typeString":"function (enum IVault.SwapKind,struct IVault.BatchSwapStep memory[] memory,contract IAsset[] memory,struct IVault.FundManagement memory,int256[] memory,uint256) payable external returns (int256[] memory)"}},"id":11450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":11449,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11384,"src":"3161:5:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3132:36:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_enum$_SwapKind_$3195_$_t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr_$_t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr_$_t_struct$_FundManagement_$3277_memory_ptr_$_t_array$_t_int256_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_int256_$dyn_memory_ptr_$value","typeString":"function (enum IVault.SwapKind,struct IVault.BatchSwapStep memory[] memory,contract IAsset[] memory,struct IVault.FundManagement memory,int256[] memory,uint256) payable external returns (int256[] memory)"}},"id":11457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3132:82:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3106:108:76"},{"body":{"id":11496,"nodeType":"Block","src":"3279:664:76","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"baseExpression":{"id":11472,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11387,"src":"3321:16:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$11296_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":11474,"indexExpression":{"id":11473,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11460,"src":"3338:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3321:19:76","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$11296_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":11475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"key","nodeType":"MemberAccess","referencedDeclaration":11295,"src":"3321:23:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11471,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"3301:19:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3301:44:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c696420636861696e6564207265666572656e6365","id":11477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3347:27:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_d6d4335fe09f08633f94e83e046ecf24abae5a9cb105f711fbef51405031f144","typeString":"literal_string \"invalid chained reference\""},"value":"invalid chained reference"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d6d4335fe09f08633f94e83e046ecf24abae5a9cb105f711fbef51405031f144","typeString":"literal_string \"invalid chained reference\""}],"id":11470,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3293:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3293:82:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11479,"nodeType":"ExpressionStatement","src":"3293:82:76"},{"expression":{"arguments":[{"expression":{"baseExpression":{"id":11481,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11387,"src":"3862:16:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$11296_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":11483,"indexExpression":{"id":11482,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11460,"src":"3879:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3862:19:76","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$11296_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":11484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"key","nodeType":"MemberAccess","referencedDeclaration":11295,"src":"3862:23:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"baseExpression":{"id":11487,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11445,"src":"3896:7:76","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"id":11492,"indexExpression":{"expression":{"baseExpression":{"id":11488,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11387,"src":"3904:16:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$11296_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":11490,"indexExpression":{"id":11489,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11460,"src":"3921:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3904:19:76","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$11296_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":11491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":11293,"src":"3904:25:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3896:34:76","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":11485,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6170,"src":"3887:4:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$6170_$","typeString":"type(library Math)"}},"id":11486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":5885,"src":"3887:8:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":11493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3887:44:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11480,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"3836:25:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":11494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3836:96:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11495,"nodeType":"ExpressionStatement","src":"3836:96:76"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11463,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11460,"src":"3245:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11464,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11387,"src":"3249:16:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$11296_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":11465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3249:23:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3245:27:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11497,"initializationExpression":{"assignments":[11460],"declarations":[{"constant":false,"id":11460,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":11497,"src":"3230:9:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11459,"name":"uint256","nodeType":"ElementaryTypeName","src":"3230:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11462,"initialValue":{"hexValue":"30","id":11461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3242:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3230:13:76"},"loopExpression":{"expression":{"id":11468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3274:3:76","subExpression":{"id":11467,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11460,"src":"3276:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11469,"nodeType":"ExpressionStatement","src":"3274:3:76"},"nodeType":"ForStatement","src":"3225:718:76"}]},"functionSelector":"18369446","id":11499,"implemented":true,"kind":"function","modifiers":[],"name":"batchSwap","nodeType":"FunctionDefinition","parameters":{"id":11388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11369,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":11499,"src":"2452:20:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"},"typeName":{"id":11368,"name":"IVault.SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3195,"src":"2452:15:76","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3195","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":11372,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":11499,"src":"2482:35:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":11370,"name":"IVault.BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3255,"src":"2482:20:76","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3255_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":11371,"nodeType":"ArrayTypeName","src":"2482:22:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3255_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"},{"constant":false,"id":11375,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":11499,"src":"2527:24:76","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_calldata_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":11373,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"2527:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"id":11374,"nodeType":"ArrayTypeName","src":"2527:8:76","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":11377,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":11499,"src":"2561:36:76","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_calldata_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":11376,"name":"IVault.FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3277,"src":"2561:21:76","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3277_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"},{"constant":false,"id":11380,"mutability":"mutable","name":"limits","nodeType":"VariableDeclaration","scope":11499,"src":"2607:24:76","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_calldata_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":11378,"name":"int256","nodeType":"ElementaryTypeName","src":"2607:6:76","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":11379,"nodeType":"ArrayTypeName","src":"2607:8:76","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"},{"constant":false,"id":11382,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":11499,"src":"2641:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11381,"name":"uint256","nodeType":"ElementaryTypeName","src":"2641:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11384,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":11499,"src":"2667:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11383,"name":"uint256","nodeType":"ElementaryTypeName","src":"2667:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11387,"mutability":"mutable","name":"outputReferences","nodeType":"VariableDeclaration","scope":11499,"src":"2690:43:76","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$11296_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference[]"},"typeName":{"baseType":{"id":11385,"name":"OutputReference","nodeType":"UserDefinedTypeName","referencedDeclaration":11296,"src":"2690:15:76","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$11296_storage_ptr","typeString":"struct VaultActions.OutputReference"}},"id":11386,"nodeType":"ArrayTypeName","src":"2690:17:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$11296_storage_$dyn_storage_ptr","typeString":"struct VaultActions.OutputReference[]"}},"visibility":"internal"}],"src":"2442:297:76"},"returnParameters":{"id":11389,"nodeType":"ParameterList","parameters":[],"src":"2757:0:76"},"scope":12166,"src":"2424:1525:76","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":11549,"nodeType":"Block","src":"4051:231:76","statements":[{"body":{"id":11539,"nodeType":"Block","src":"4102:115:76","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":11519,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11502,"src":"4124:3:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3001_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IVault.UserBalanceOp calldata[] calldata"}},"id":11521,"indexExpression":{"id":11520,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11508,"src":"4128:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4124:6:76","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3001_calldata_ptr","typeString":"struct IVault.UserBalanceOp calldata"}},"id":11522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":2998,"src":"4124:13:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11523,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4141:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4141:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4124:27:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":11526,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11502,"src":"4155:3:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3001_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IVault.UserBalanceOp calldata[] calldata"}},"id":11528,"indexExpression":{"id":11527,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11508,"src":"4159:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4155:6:76","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3001_calldata_ptr","typeString":"struct IVault.UserBalanceOp calldata"}},"id":11529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":2998,"src":"4155:13:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":11532,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4180:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_VaultActions_$12166","typeString":"contract VaultActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultActions_$12166","typeString":"contract VaultActions"}],"id":11531,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4172:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11530,"name":"address","nodeType":"ElementaryTypeName","src":"4172:7:76","typeDescriptions":{}}},"id":11533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4172:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4155:30:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4124:61:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":11536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4187:18:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":11518,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4116:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4116:90:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11538,"nodeType":"ExpressionStatement","src":"4116:90:76"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11511,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11508,"src":"4081:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11512,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11502,"src":"4085:3:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3001_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IVault.UserBalanceOp calldata[] calldata"}},"id":11513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4085:10:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4081:14:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11540,"initializationExpression":{"assignments":[11508],"declarations":[{"constant":false,"id":11508,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":11540,"src":"4066:9:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11507,"name":"uint256","nodeType":"ElementaryTypeName","src":"4066:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11510,"initialValue":{"hexValue":"30","id":11509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4078:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4066:13:76"},"loopExpression":{"expression":{"id":11516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4097:3:76","subExpression":{"id":11515,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11508,"src":"4097:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11517,"nodeType":"ExpressionStatement","src":"4097:3:76"},"nodeType":"ForStatement","src":"4061:156:76"},{"expression":{"arguments":[{"id":11546,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11502,"src":"4271:3:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3001_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IVault.UserBalanceOp calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3001_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IVault.UserBalanceOp calldata[] calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3001_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IVault.UserBalanceOp calldata[] calldata"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11541,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10514,"src":"4226:8:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3371_$","typeString":"function () view returns (contract IVault)"}},"id":11542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4226:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":11543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"manageUserBalance","nodeType":"MemberAccess","referencedDeclaration":2990,"src":"4226:28:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_array$_t_struct$_UserBalanceOp_$3001_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (struct IVault.UserBalanceOp memory[] memory) payable external"}},"id":11545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":11544,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11504,"src":"4263:5:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"4226:44:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_array$_t_struct$_UserBalanceOp_$3001_memory_ptr_$dyn_memory_ptr_$returns$__$value","typeString":"function (struct IVault.UserBalanceOp memory[] memory) payable external"}},"id":11547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4226:49:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11548,"nodeType":"ExpressionStatement","src":"4226:49:76"}]},"functionSelector":"ecc02637","id":11550,"implemented":true,"kind":"function","modifiers":[],"name":"manageUserBalance","nodeType":"FunctionDefinition","parameters":{"id":11505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11502,"mutability":"mutable","name":"ops","nodeType":"VariableDeclaration","scope":11550,"src":"3982:35:76","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3001_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IVault.UserBalanceOp[]"},"typeName":{"baseType":{"id":11500,"name":"IVault.UserBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":3001,"src":"3982:20:76","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3001_storage_ptr","typeString":"struct IVault.UserBalanceOp"}},"id":11501,"nodeType":"ArrayTypeName","src":"3982:22:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3001_storage_$dyn_storage_ptr","typeString":"struct IVault.UserBalanceOp[]"}},"visibility":"internal"},{"constant":false,"id":11504,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":11550,"src":"4019:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11503,"name":"uint256","nodeType":"ElementaryTypeName","src":"4019:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3981:52:76"},"returnParameters":{"id":11506,"nodeType":"ParameterList","parameters":[],"src":"4051:0:76"},"scope":12166,"src":"3955:327:76","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"VaultActions.PoolKind","id":11552,"members":[{"id":11551,"name":"WEIGHTED","nodeType":"EnumValue","src":"4304:8:76"}],"name":"PoolKind","nodeType":"EnumDefinition","src":"4288:26:76"},{"body":{"id":11646,"nodeType":"Block","src":"4562:1254:76","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11570,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11558,"src":"4580:6:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11571,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4590:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4590:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4580:20:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11574,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11558,"src":"4604:6:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":11577,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4622:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_VaultActions_$12166","typeString":"contract VaultActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultActions_$12166","typeString":"contract VaultActions"}],"id":11576,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4614:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11575,"name":"address","nodeType":"ElementaryTypeName","src":"4614:7:76","typeDescriptions":{}}},"id":11578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4614:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4604:23:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4580:47:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":11581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4629:18:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":11569,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4572:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4572:76:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11583,"nodeType":"ExpressionStatement","src":"4572:76:76"},{"assignments":[11585],"declarations":[{"constant":false,"id":11585,"mutability":"mutable","name":"bpt","nodeType":"VariableDeclaration","scope":11646,"src":"4969:10:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":11584,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"4969:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"id":11592,"initialValue":{"arguments":[{"arguments":[{"id":11589,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11554,"src":"5016:6:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":11587,"name":"VaultHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4138,"src":"4989:12:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_VaultHelpers_$4138_$","typeString":"type(library VaultHelpers)"}},"id":11588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toPoolAddress","nodeType":"MemberAccess","referencedDeclaration":4137,"src":"4989:26:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) pure returns (address)"}},"id":11590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4989:34:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11586,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"4982:6:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":11591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4982:42:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"4969:55:76"},{"assignments":[11594],"declarations":[{"constant":false,"id":11594,"mutability":"mutable","name":"maybeInitialRecipientBPT","nodeType":"VariableDeclaration","scope":11646,"src":"5034:32:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11593,"name":"uint256","nodeType":"ElementaryTypeName","src":"5034:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11604,"initialValue":{"condition":{"arguments":[{"id":11596,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11566,"src":"5089:15:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11595,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"5069:19:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5069:36:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":11602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5135:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":11603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5069:67:76","trueExpression":{"arguments":[{"id":11600,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11560,"src":"5122:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11598,"name":"bpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11585,"src":"5108:3:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":11599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1903,"src":"5108:13:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":11601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5108:24:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5034:102:76"},{"expression":{"id":11613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11605,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11562,"src":"5147:7:76","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3150_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}},"id":11607,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3147,"src":"5147:16:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11609,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11556,"src":"5206:4:76","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$11552","typeString":"enum VaultActions.PoolKind"}},{"expression":{"id":11610,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11562,"src":"5212:7:76","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3150_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}},"id":11611,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3147,"src":"5212:16:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_PoolKind_$11552","typeString":"enum VaultActions.PoolKind"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11608,"name":"_doJoinPoolChainedReferenceReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11673,"src":"5166:39:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_PoolKind_$11552_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (enum VaultActions.PoolKind,bytes memory) returns (bytes memory)"}},"id":11612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5166:63:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"5147:82:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11614,"nodeType":"ExpressionStatement","src":"5147:82:76"},{"expression":{"arguments":[{"id":11620,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11554,"src":"5276:6:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":11621,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11558,"src":"5284:6:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11622,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11560,"src":"5292:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11623,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11562,"src":"5303:7:76","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3150_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_JoinPoolRequest_$3150_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_JoinPoolRequest_$3150_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11615,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10514,"src":"5240:8:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3371_$","typeString":"function () view returns (contract IVault)"}},"id":11616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5240:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":11617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"joinPool","nodeType":"MemberAccess","referencedDeclaration":3139,"src":"5240:19:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_bytes32_$_t_address_$_t_address_$_t_struct$_JoinPoolRequest_$3150_memory_ptr_$returns$__$","typeString":"function (bytes32,address,address,struct IVault.JoinPoolRequest memory) payable external"}},"id":11619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":11618,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11564,"src":"5268:5:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5240:35:76","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_bytes32_$_t_address_$_t_address_$_t_struct$_JoinPoolRequest_$3150_memory_ptr_$returns$__$value","typeString":"function (bytes32,address,address,struct IVault.JoinPoolRequest memory) payable external"}},"id":11624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5240:71:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11625,"nodeType":"ExpressionStatement","src":"5240:71:76"},{"condition":{"arguments":[{"id":11627,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11566,"src":"5346:15:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11626,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"5326:19:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5326:36:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11645,"nodeType":"IfStatement","src":"5322:488:76","trueBody":{"id":11644,"nodeType":"Block","src":"5364:446:76","statements":[{"assignments":[11630],"declarations":[{"constant":false,"id":11630,"mutability":"mutable","name":"finalRecipientBPT","nodeType":"VariableDeclaration","scope":11644,"src":"5642:25:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11629,"name":"uint256","nodeType":"ElementaryTypeName","src":"5642:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11635,"initialValue":{"arguments":[{"id":11633,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11560,"src":"5684:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11631,"name":"bpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11585,"src":"5670:3:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":11632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1903,"src":"5670:13:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":11634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5670:24:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5642:52:76"},{"expression":{"arguments":[{"id":11637,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11566,"src":"5734:15:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":11640,"name":"maybeInitialRecipientBPT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11594,"src":"5773:24:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11638,"name":"finalRecipientBPT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11630,"src":"5751:17:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":5980,"src":"5751:21:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":11641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5751:47:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11636,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"5708:25:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":11642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5708:91:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11643,"nodeType":"ExpressionStatement","src":"5708:91:76"}]}}]},"functionSelector":"8fe4624f","id":11647,"implemented":true,"kind":"function","modifiers":[],"name":"joinPool","nodeType":"FunctionDefinition","parameters":{"id":11567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11554,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":11647,"src":"4347:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11553,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4347:7:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11556,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":11647,"src":"4371:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$11552","typeString":"enum VaultActions.PoolKind"},"typeName":{"id":11555,"name":"PoolKind","nodeType":"UserDefinedTypeName","referencedDeclaration":11552,"src":"4371:8:76","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$11552","typeString":"enum VaultActions.PoolKind"}},"visibility":"internal"},{"constant":false,"id":11558,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":11647,"src":"4394:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11557,"name":"address","nodeType":"ElementaryTypeName","src":"4394:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11560,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11647,"src":"4418:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11559,"name":"address","nodeType":"ElementaryTypeName","src":"4418:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11562,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":11647,"src":"4445:37:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3150_memory_ptr","typeString":"struct IVault.JoinPoolRequest"},"typeName":{"id":11561,"name":"IVault.JoinPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3150,"src":"4445:22:76","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3150_storage_ptr","typeString":"struct IVault.JoinPoolRequest"}},"visibility":"internal"},{"constant":false,"id":11564,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":11647,"src":"4492:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11563,"name":"uint256","nodeType":"ElementaryTypeName","src":"4492:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11566,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":11647,"src":"4515:23:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11565,"name":"uint256","nodeType":"ElementaryTypeName","src":"4515:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4337:207:76"},"returnParameters":{"id":11568,"nodeType":"ParameterList","parameters":[],"src":"4562:0:76"},"scope":12166,"src":"4320:1496:76","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":11672,"nodeType":"Block","src":"5960:198:76","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_PoolKind_$11552","typeString":"enum VaultActions.PoolKind"},"id":11659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11656,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11649,"src":"5974:4:76","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$11552","typeString":"enum VaultActions.PoolKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11657,"name":"PoolKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11552,"src":"5982:8:76","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PoolKind_$11552_$","typeString":"type(enum VaultActions.PoolKind)"}},"id":11658,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"WEIGHTED","nodeType":"MemberAccess","src":"5982:17:76","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$11552","typeString":"enum VaultActions.PoolKind"}},"src":"5974:25:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11670,"nodeType":"Block","src":"6092:60:76","statements":[{"expression":{"arguments":[{"expression":{"id":11666,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"6114:6:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":11667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNHANDLED_JOIN_KIND","nodeType":"MemberAccess","referencedDeclaration":1376,"src":"6114:26:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11665,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1242,1262],"referencedDeclaration":1242,"src":"6106:7:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":11668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6106:35:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11669,"nodeType":"ExpressionStatement","src":"6106:35:76"}]},"id":11671,"nodeType":"IfStatement","src":"5970:182:76","trueBody":{"id":11664,"nodeType":"Block","src":"6001:85:76","statements":[{"expression":{"arguments":[{"id":11661,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11651,"src":"6066:8:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11660,"name":"_doWeightedJoinChainedReferenceReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11704,"src":"6022:43:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":11662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6022:53:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11655,"id":11663,"nodeType":"Return","src":"6015:60:76"}]}}]},"id":11673,"implemented":true,"kind":"function","modifiers":[],"name":"_doJoinPoolChainedReferenceReplacements","nodeType":"FunctionDefinition","parameters":{"id":11652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11649,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":11673,"src":"5871:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$11552","typeString":"enum VaultActions.PoolKind"},"typeName":{"id":11648,"name":"PoolKind","nodeType":"UserDefinedTypeName","referencedDeclaration":11552,"src":"5871:8:76","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$11552","typeString":"enum VaultActions.PoolKind"}},"visibility":"internal"},{"constant":false,"id":11651,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":11673,"src":"5886:21:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11650,"name":"bytes","nodeType":"ElementaryTypeName","src":"5886:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5870:38:76"},"returnParameters":{"id":11655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11654,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11673,"src":"5942:12:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11653,"name":"bytes","nodeType":"ElementaryTypeName","src":"5942:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5941:14:76"},"scope":12166,"src":"5822:336:76","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":11703,"nodeType":"Block","src":"6271:450:76","statements":[{"assignments":[11683],"declarations":[{"constant":false,"id":11683,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":11703,"src":"6281:34:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$971","typeString":"enum WeightedPoolUserData.JoinKind"},"typeName":{"id":11682,"name":"WeightedPoolUserData.JoinKind","nodeType":"UserDefinedTypeName","referencedDeclaration":971,"src":"6281:29:76","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$971","typeString":"enum WeightedPoolUserData.JoinKind"}},"visibility":"internal"}],"id":11688,"initialValue":{"arguments":[{"id":11686,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11675,"src":"6348:8:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11684,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"6318:20:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1193_$","typeString":"type(library WeightedPoolUserData)"}},"id":11685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"joinKind","nodeType":"MemberAccess","referencedDeclaration":991,"src":"6318:29:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_enum$_JoinKind_$971_$","typeString":"function (bytes memory) pure returns (enum WeightedPoolUserData.JoinKind)"}},"id":11687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6318:39:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$971","typeString":"enum WeightedPoolUserData.JoinKind"}},"nodeType":"VariableDeclarationStatement","src":"6281:76:76"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_JoinKind_$971","typeString":"enum WeightedPoolUserData.JoinKind"},"id":11693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11689,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11683,"src":"6372:4:76","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$971","typeString":"enum WeightedPoolUserData.JoinKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":11690,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"6380:20:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1193_$","typeString":"type(library WeightedPoolUserData)"}},"id":11691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"JoinKind","nodeType":"MemberAccess","referencedDeclaration":971,"src":"6380:29:76","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$971_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}},"id":11692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_TOKENS_IN_FOR_BPT_OUT","nodeType":"MemberAccess","src":"6380:57:76","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$971","typeString":"enum WeightedPoolUserData.JoinKind"}},"src":"6372:65:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11701,"nodeType":"Block","src":"6532:183:76","statements":[{"expression":{"id":11699,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11675,"src":"6696:8:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11679,"id":11700,"nodeType":"Return","src":"6689:15:76"}]},"id":11702,"nodeType":"IfStatement","src":"6368:347:76","trueBody":{"id":11698,"nodeType":"Block","src":"6439:87:76","statements":[{"expression":{"arguments":[{"id":11695,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11675,"src":"6506:8:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11694,"name":"_doWeightedExactTokensInForBPTOutReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11776,"src":"6460:45:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":11696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6460:55:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11679,"id":11697,"nodeType":"Return","src":"6453:62:76"}]}}]},"id":11704,"implemented":true,"kind":"function","modifiers":[],"name":"_doWeightedJoinChainedReferenceReplacements","nodeType":"FunctionDefinition","parameters":{"id":11676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11675,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":11704,"src":"6217:21:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11674,"name":"bytes","nodeType":"ElementaryTypeName","src":"6217:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6216:23:76"},"returnParameters":{"id":11679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11678,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11704,"src":"6257:12:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11677,"name":"bytes","nodeType":"ElementaryTypeName","src":"6257:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6256:14:76"},"scope":12166,"src":"6164:557:76","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":11775,"nodeType":"Block","src":"6836:718:76","statements":[{"assignments":[11715,11717],"declarations":[{"constant":false,"id":11715,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":11775,"src":"6847:26:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11713,"name":"uint256","nodeType":"ElementaryTypeName","src":"6847:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11714,"nodeType":"ArrayTypeName","src":"6847:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11717,"mutability":"mutable","name":"minBPTAmountOut","nodeType":"VariableDeclaration","scope":11775,"src":"6875:23:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11716,"name":"uint256","nodeType":"ElementaryTypeName","src":"6875:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11722,"initialValue":{"arguments":[{"id":11720,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11706,"src":"6946:8:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11718,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"6902:20:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1193_$","typeString":"type(library WeightedPoolUserData)"}},"id":11719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exactTokensInForBptOut","nodeType":"MemberAccess","referencedDeclaration":1055,"src":"6902:43:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes memory) pure returns (uint256[] memory,uint256)"}},"id":11721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6902:53:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6846:109:76"},{"assignments":[11724],"declarations":[{"constant":false,"id":11724,"mutability":"mutable","name":"replacedAmounts","nodeType":"VariableDeclaration","scope":11775,"src":"6966:20:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11723,"name":"bool","nodeType":"ElementaryTypeName","src":"6966:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":11726,"initialValue":{"hexValue":"66616c7365","id":11725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6989:5:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"nodeType":"VariableDeclarationStatement","src":"6966:28:76"},{"body":{"id":11761,"nodeType":"Block","src":"7051:221:76","statements":[{"assignments":[11739],"declarations":[{"constant":false,"id":11739,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11761,"src":"7065:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11738,"name":"uint256","nodeType":"ElementaryTypeName","src":"7065:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11743,"initialValue":{"baseExpression":{"id":11740,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11715,"src":"7082:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11742,"indexExpression":{"id":11741,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11728,"src":"7092:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7082:12:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7065:29:76"},{"condition":{"arguments":[{"id":11745,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11739,"src":"7132:6:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11744,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"7112:19:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7112:27:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11760,"nodeType":"IfStatement","src":"7108:154:76","trueBody":{"id":11759,"nodeType":"Block","src":"7141:121:76","statements":[{"expression":{"id":11753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11747,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11715,"src":"7159:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11749,"indexExpression":{"id":11748,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11728,"src":"7169:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7159:12:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11751,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11739,"src":"7200:6:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11750,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"7174:25:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":11752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7174:33:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7159:48:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11754,"nodeType":"ExpressionStatement","src":"7159:48:76"},{"expression":{"id":11757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11755,"name":"replacedAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11724,"src":"7225:15:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":11756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7243:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7225:22:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11758,"nodeType":"ExpressionStatement","src":"7225:22:76"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11731,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11728,"src":"7024:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11732,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11715,"src":"7028:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7028:16:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7024:20:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11762,"initializationExpression":{"assignments":[11728],"declarations":[{"constant":false,"id":11728,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":11762,"src":"7009:9:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11727,"name":"uint256","nodeType":"ElementaryTypeName","src":"7009:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11730,"initialValue":{"hexValue":"30","id":11729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7021:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7009:13:76"},"loopExpression":{"expression":{"id":11736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7046:3:76","subExpression":{"id":11735,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11728,"src":"7048:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11737,"nodeType":"ExpressionStatement","src":"7046:3:76"},"nodeType":"ForStatement","src":"7004:268:76"},{"expression":{"condition":{"id":11763,"name":"replacedAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11724,"src":"7389:15:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":11772,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11706,"src":"7539:8:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7389:158:76","trueExpression":{"arguments":[{"expression":{"expression":{"id":11766,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"7434:20:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1193_$","typeString":"type(library WeightedPoolUserData)"}},"id":11767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"JoinKind","nodeType":"MemberAccess","referencedDeclaration":971,"src":"7434:29:76","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$971_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}},"id":11768,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_TOKENS_IN_FOR_BPT_OUT","nodeType":"MemberAccess","src":"7434:57:76","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$971","typeString":"enum WeightedPoolUserData.JoinKind"}},{"id":11769,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11715,"src":"7493:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":11770,"name":"minBPTAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11717,"src":"7504:15:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_JoinKind_$971","typeString":"enum WeightedPoolUserData.JoinKind"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11764,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7423:3:76","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"7423:10:76","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7423:97:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11710,"id":11774,"nodeType":"Return","src":"7370:177:76"}]},"id":11776,"implemented":true,"kind":"function","modifiers":[],"name":"_doWeightedExactTokensInForBPTOutReplacements","nodeType":"FunctionDefinition","parameters":{"id":11707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11706,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":11776,"src":"6782:21:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11705,"name":"bytes","nodeType":"ElementaryTypeName","src":"6782:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6781:23:76"},"returnParameters":{"id":11710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11709,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11776,"src":"6822:12:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11708,"name":"bytes","nodeType":"ElementaryTypeName","src":"6822:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6821:14:76"},"scope":12166,"src":"6727:827:76","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":12019,"nodeType":"Block","src":"7807:2297:76","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11793,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11782,"src":"7825:6:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11794,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7835:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7835:10:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7825:20:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11797,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11782,"src":"7849:6:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":11800,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7867:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_VaultActions_$12166","typeString":"contract VaultActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultActions_$12166","typeString":"contract VaultActions"}],"id":11799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7859:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11798,"name":"address","nodeType":"ElementaryTypeName","src":"7859:7:76","typeDescriptions":{}}},"id":11801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7859:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7849:23:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7825:47:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":11804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7874:18:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":11792,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7817:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7817:76:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11806,"nodeType":"ExpressionStatement","src":"7817:76:76"},{"assignments":[11810],"declarations":[{"constant":false,"id":11810,"mutability":"mutable","name":"trackedTokens","nodeType":"VariableDeclaration","scope":12019,"src":"8071:29:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":11808,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"8071:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":11809,"nodeType":"ArrayTypeName","src":"8071:8:76","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":11817,"initialValue":{"arguments":[{"expression":{"id":11814,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11789,"src":"8116:16:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$11296_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":11815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8116:23:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11813,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8103:12:76","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":11811,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"8107:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":11812,"nodeType":"ArrayTypeName","src":"8107:8:76","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":11816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8103:37:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8071:69:76"},{"assignments":[11822],"declarations":[{"constant":false,"id":11822,"mutability":"mutable","name":"initialRecipientBalances","nodeType":"VariableDeclaration","scope":12019,"src":"8239:41:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11820,"name":"uint256","nodeType":"ElementaryTypeName","src":"8239:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11821,"nodeType":"ArrayTypeName","src":"8239:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":11829,"initialValue":{"arguments":[{"expression":{"id":11826,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11789,"src":"8297:16:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$11296_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":11827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8297:23:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11825,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8283:13:76","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":11823,"name":"uint256","nodeType":"ElementaryTypeName","src":"8287:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11824,"nodeType":"ArrayTypeName","src":"8287:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":11828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8283:38:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8239:82:76"},{"body":{"id":11891,"nodeType":"Block","src":"8385:432:76","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"baseExpression":{"id":11843,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11789,"src":"8427:16:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$11296_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":11845,"indexExpression":{"id":11844,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11831,"src":"8444:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8427:19:76","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$11296_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":11846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"key","nodeType":"MemberAccess","referencedDeclaration":11295,"src":"8427:23:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11842,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"8407:19:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8407:44:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c696420636861696e6564207265666572656e6365","id":11848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8453:27:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_d6d4335fe09f08633f94e83e046ecf24abae5a9cb105f711fbef51405031f144","typeString":"literal_string \"invalid chained reference\""},"value":"invalid chained reference"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d6d4335fe09f08633f94e83e046ecf24abae5a9cb105f711fbef51405031f144","typeString":"literal_string \"invalid chained reference\""}],"id":11841,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8399:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8399:82:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11850,"nodeType":"ExpressionStatement","src":"8399:82:76"},{"assignments":[11852],"declarations":[{"constant":false,"id":11852,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":11891,"src":"8496:12:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"},"typeName":{"id":11851,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"8496:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"visibility":"internal"}],"id":11860,"initialValue":{"baseExpression":{"expression":{"id":11853,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11786,"src":"8511:7:76","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":11854,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":3165,"src":"8511:14:76","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":11859,"indexExpression":{"expression":{"baseExpression":{"id":11855,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11789,"src":"8526:16:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$11296_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":11857,"indexExpression":{"id":11856,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11831,"src":"8543:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8526:19:76","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$11296_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":11858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":11293,"src":"8526:25:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8511:41:76","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"nodeType":"VariableDeclarationStatement","src":"8496:56:76"},{"condition":{"expression":{"id":11861,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11786,"src":"8570:7:76","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":11862,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toInternalBalance","nodeType":"MemberAccess","referencedDeclaration":3172,"src":"8570:25:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11889,"nodeType":"Block","src":"8671:136:76","statements":[{"expression":{"id":11887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11872,"name":"initialRecipientBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11822,"src":"8689:24:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11874,"indexExpression":{"id":11873,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11831,"src":"8714:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8689:27:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"arguments":[{"id":11876,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11852,"src":"8726:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}],"id":11875,"name":"_isETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7959,"src":"8719:6:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$2658_$returns$_t_bool_$","typeString":"function (contract IAsset) pure returns (bool)"}},"id":11877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8719:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":11884,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11784,"src":"8782:9:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"id":11881,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11852,"src":"8765:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}],"id":11880,"name":"_asIERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8041,"src":"8755:9:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$2658_$returns$_t_contract$_IERC20_$1964_$","typeString":"function (contract IAsset) pure returns (contract IERC20)"}},"id":11882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8755:16:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":11883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1903,"src":"8755:26:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":11885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8755:37:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8719:73:76","trueExpression":{"expression":{"id":11878,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11784,"src":"8735:9:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":11879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"8735:17:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8689:103:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11888,"nodeType":"ExpressionStatement","src":"8689:103:76"}]},"id":11890,"nodeType":"IfStatement","src":"8566:241:76","trueBody":{"id":11871,"nodeType":"Block","src":"8597:68:76","statements":[{"expression":{"id":11869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11863,"name":"trackedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11810,"src":"8615:13:76","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":11865,"indexExpression":{"id":11864,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11831,"src":"8629:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8615:16:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11867,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11852,"src":"8644:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}],"id":11866,"name":"_asIERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8041,"src":"8634:9:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$2658_$returns$_t_contract$_IERC20_$1964_$","typeString":"function (contract IAsset) pure returns (contract IERC20)"}},"id":11868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8634:16:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"8615:35:76","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":11870,"nodeType":"ExpressionStatement","src":"8615:35:76"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11834,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11831,"src":"8351:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11835,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11789,"src":"8355:16:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$11296_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":11836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8355:23:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8351:27:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11892,"initializationExpression":{"assignments":[11831],"declarations":[{"constant":false,"id":11831,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":11892,"src":"8336:9:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11830,"name":"uint256","nodeType":"ElementaryTypeName","src":"8336:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11833,"initialValue":{"hexValue":"30","id":11832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8348:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8336:13:76"},"loopExpression":{"expression":{"id":11839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8380:3:76","subExpression":{"id":11838,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11831,"src":"8380:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11840,"nodeType":"ExpressionStatement","src":"8380:3:76"},"nodeType":"ForStatement","src":"8331:486:76"},{"condition":{"expression":{"id":11893,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11786,"src":"8830:7:76","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":11894,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toInternalBalance","nodeType":"MemberAccess","referencedDeclaration":3172,"src":"8830:25:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11905,"nodeType":"IfStatement","src":"8826:138:76","trueBody":{"id":11904,"nodeType":"Block","src":"8857:107:76","statements":[{"expression":{"id":11902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11895,"name":"initialRecipientBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11822,"src":"8871:24:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11899,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11784,"src":"8928:9:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":11900,"name":"trackedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11810,"src":"8939:13:76","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11896,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10514,"src":"8898:8:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3371_$","typeString":"function () view returns (contract IVault)"}},"id":11897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8898:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":11898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getInternalBalance","nodeType":"MemberAccess","referencedDeclaration":2983,"src":"8898:29:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,contract IERC20[] memory) view external returns (uint256[] memory)"}},"id":11901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8898:55:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"8871:82:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11903,"nodeType":"ExpressionStatement","src":"8871:82:76"}]}},{"expression":{"id":11914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11906,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11786,"src":"8999:7:76","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":11908,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3170,"src":"8999:16:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11910,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11780,"src":"9058:4:76","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$11552","typeString":"enum VaultActions.PoolKind"}},{"expression":{"id":11911,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11786,"src":"9064:7:76","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":11912,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3170,"src":"9064:16:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_PoolKind_$11552","typeString":"enum VaultActions.PoolKind"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11909,"name":"_doExitPoolChainedReferenceReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12046,"src":"9018:39:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_PoolKind_$11552_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (enum VaultActions.PoolKind,bytes memory) returns (bytes memory)"}},"id":11913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9018:63:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"8999:82:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11915,"nodeType":"ExpressionStatement","src":"8999:82:76"},{"expression":{"arguments":[{"id":11919,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11778,"src":"9111:6:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":11920,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11782,"src":"9119:6:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11921,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11784,"src":"9127:9:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":11922,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11786,"src":"9138:7:76","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11916,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10514,"src":"9091:8:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3371_$","typeString":"function () view returns (contract IVault)"}},"id":11917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9091:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":11918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exitPool","nodeType":"MemberAccess","referencedDeclaration":3162,"src":"9091:19:76","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_payable_$_t_struct$_ExitPoolRequest_$3173_memory_ptr_$returns$__$","typeString":"function (bytes32,address,address payable,struct IVault.ExitPoolRequest memory) external"}},"id":11923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9091:55:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11924,"nodeType":"ExpressionStatement","src":"9091:55:76"},{"assignments":[11929],"declarations":[{"constant":false,"id":11929,"mutability":"mutable","name":"finalRecipientTokenBalances","nodeType":"VariableDeclaration","scope":12019,"src":"9216:44:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11927,"name":"uint256","nodeType":"ElementaryTypeName","src":"9216:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11928,"nodeType":"ArrayTypeName","src":"9216:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":11936,"initialValue":{"arguments":[{"expression":{"id":11933,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11789,"src":"9277:16:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$11296_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":11934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9277:23:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9263:13:76","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":11930,"name":"uint256","nodeType":"ElementaryTypeName","src":"9267:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11931,"nodeType":"ArrayTypeName","src":"9267:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":11935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9263:38:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9216:85:76"},{"condition":{"expression":{"id":11937,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11786,"src":"9315:7:76","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":11938,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toInternalBalance","nodeType":"MemberAccess","referencedDeclaration":3172,"src":"9315:25:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11989,"nodeType":"Block","src":"9458:331:76","statements":[{"body":{"id":11987,"nodeType":"Block","src":"9526:253:76","statements":[{"assignments":[11961],"declarations":[{"constant":false,"id":11961,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":11987,"src":"9544:12:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"},"typeName":{"id":11960,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2658,"src":"9544:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"visibility":"internal"}],"id":11969,"initialValue":{"baseExpression":{"expression":{"id":11962,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11786,"src":"9559:7:76","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":11963,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":3165,"src":"9559:14:76","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":11968,"indexExpression":{"expression":{"baseExpression":{"id":11964,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11789,"src":"9574:16:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$11296_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":11966,"indexExpression":{"id":11965,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11950,"src":"9591:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9574:19:76","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$11296_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":11967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":11293,"src":"9574:25:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9559:41:76","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}},"nodeType":"VariableDeclarationStatement","src":"9544:56:76"},{"expression":{"id":11985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11970,"name":"finalRecipientTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11929,"src":"9618:27:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11972,"indexExpression":{"id":11971,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11950,"src":"9646:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9618:30:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"arguments":[{"id":11974,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11961,"src":"9658:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}],"id":11973,"name":"_isETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7959,"src":"9651:6:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$2658_$returns$_t_bool_$","typeString":"function (contract IAsset) pure returns (bool)"}},"id":11975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9651:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":11982,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11784,"src":"9754:9:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"id":11979,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11961,"src":"9737:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2658","typeString":"contract IAsset"}],"id":11978,"name":"_asIERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8041,"src":"9727:9:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$2658_$returns$_t_contract$_IERC20_$1964_$","typeString":"function (contract IAsset) pure returns (contract IERC20)"}},"id":11980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9727:16:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":11981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1903,"src":"9727:26:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":11983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9727:37:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9651:113:76","trueExpression":{"expression":{"id":11976,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11784,"src":"9687:9:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":11977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"9687:17:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9618:146:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11986,"nodeType":"ExpressionStatement","src":"9618:146:76"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11953,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11950,"src":"9492:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11954,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11789,"src":"9496:16:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$11296_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":11955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9496:23:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9492:27:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11988,"initializationExpression":{"assignments":[11950],"declarations":[{"constant":false,"id":11950,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":11988,"src":"9477:9:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11949,"name":"uint256","nodeType":"ElementaryTypeName","src":"9477:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11952,"initialValue":{"hexValue":"30","id":11951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9489:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9477:13:76"},"loopExpression":{"expression":{"id":11958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9521:3:76","subExpression":{"id":11957,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11950,"src":"9521:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11959,"nodeType":"ExpressionStatement","src":"9521:3:76"},"nodeType":"ForStatement","src":"9472:307:76"}]},"id":11990,"nodeType":"IfStatement","src":"9311:478:76","trueBody":{"id":11948,"nodeType":"Block","src":"9342:110:76","statements":[{"expression":{"id":11946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11939,"name":"finalRecipientTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11929,"src":"9356:27:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11943,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11784,"src":"9416:9:76","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":11944,"name":"trackedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11810,"src":"9427:13:76","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11940,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10514,"src":"9386:8:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3371_$","typeString":"function () view returns (contract IVault)"}},"id":11941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9386:10:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":11942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getInternalBalance","nodeType":"MemberAccess","referencedDeclaration":2983,"src":"9386:29:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,contract IERC20[] memory) view external returns (uint256[] memory)"}},"id":11945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9386:55:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"9356:85:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11947,"nodeType":"ExpressionStatement","src":"9356:85:76"}]}},{"body":{"id":12017,"nodeType":"Block","src":"9912:186:76","statements":[{"expression":{"arguments":[{"expression":{"baseExpression":{"id":12003,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11789,"src":"9969:16:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$11296_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":12005,"indexExpression":{"id":12004,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11992,"src":"9986:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9969:19:76","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$11296_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":12006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"key","nodeType":"MemberAccess","referencedDeclaration":11295,"src":"9969:23:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"baseExpression":{"id":12011,"name":"initialRecipientBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11822,"src":"10045:24:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12013,"indexExpression":{"id":12012,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11992,"src":"10070:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10045:27:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":12007,"name":"finalRecipientTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11929,"src":"10010:27:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12009,"indexExpression":{"id":12008,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11992,"src":"10038:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10010:30:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":5980,"src":"10010:34:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":12014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10010:63:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12002,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"9926:25:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9926:161:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12016,"nodeType":"ExpressionStatement","src":"9926:161:76"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11995,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11992,"src":"9878:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11996,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11789,"src":"9882:16:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$11296_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":11997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9882:23:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9878:27:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12018,"initializationExpression":{"assignments":[11992],"declarations":[{"constant":false,"id":11992,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":12018,"src":"9863:9:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11991,"name":"uint256","nodeType":"ElementaryTypeName","src":"9863:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11994,"initialValue":{"hexValue":"30","id":11993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9875:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9863:13:76"},"loopExpression":{"expression":{"id":12000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9907:3:76","subExpression":{"id":11999,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11992,"src":"9907:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12001,"nodeType":"ExpressionStatement","src":"9907:3:76"},"nodeType":"ForStatement","src":"9858:240:76"}]},"functionSelector":"d80952d5","id":12020,"implemented":true,"kind":"function","modifiers":[],"name":"exitPool","nodeType":"FunctionDefinition","parameters":{"id":11790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11778,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":12020,"src":"7587:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11777,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7587:7:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11780,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":12020,"src":"7611:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$11552","typeString":"enum VaultActions.PoolKind"},"typeName":{"id":11779,"name":"PoolKind","nodeType":"UserDefinedTypeName","referencedDeclaration":11552,"src":"7611:8:76","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$11552","typeString":"enum VaultActions.PoolKind"}},"visibility":"internal"},{"constant":false,"id":11782,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":12020,"src":"7634:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11781,"name":"address","nodeType":"ElementaryTypeName","src":"7634:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11784,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":12020,"src":"7658:25:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":11783,"name":"address","nodeType":"ElementaryTypeName","src":"7658:15:76","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":11786,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":12020,"src":"7693:37:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":11785,"name":"IVault.ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3173,"src":"7693:22:76","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"},{"constant":false,"id":11789,"mutability":"mutable","name":"outputReferences","nodeType":"VariableDeclaration","scope":12020,"src":"7740:43:76","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$11296_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference[]"},"typeName":{"baseType":{"id":11787,"name":"OutputReference","nodeType":"UserDefinedTypeName","referencedDeclaration":11296,"src":"7740:15:76","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$11296_storage_ptr","typeString":"struct VaultActions.OutputReference"}},"id":11788,"nodeType":"ArrayTypeName","src":"7740:17:76","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$11296_storage_$dyn_storage_ptr","typeString":"struct VaultActions.OutputReference[]"}},"visibility":"internal"}],"src":"7577:212:76"},"returnParameters":{"id":11791,"nodeType":"ParameterList","parameters":[],"src":"7807:0:76"},"scope":12166,"src":"7560:2544:76","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":12045,"nodeType":"Block","src":"10248:198:76","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_PoolKind_$11552","typeString":"enum VaultActions.PoolKind"},"id":12032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12029,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12022,"src":"10262:4:76","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$11552","typeString":"enum VaultActions.PoolKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12030,"name":"PoolKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11552,"src":"10270:8:76","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PoolKind_$11552_$","typeString":"type(enum VaultActions.PoolKind)"}},"id":12031,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"WEIGHTED","nodeType":"MemberAccess","src":"10270:17:76","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$11552","typeString":"enum VaultActions.PoolKind"}},"src":"10262:25:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12043,"nodeType":"Block","src":"10380:60:76","statements":[{"expression":{"arguments":[{"expression":{"id":12039,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"10402:6:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":12040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNHANDLED_EXIT_KIND","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"10402:26:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12038,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1242,1262],"referencedDeclaration":1242,"src":"10394:7:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":12041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10394:35:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12042,"nodeType":"ExpressionStatement","src":"10394:35:76"}]},"id":12044,"nodeType":"IfStatement","src":"10258:182:76","trueBody":{"id":12037,"nodeType":"Block","src":"10289:85:76","statements":[{"expression":{"arguments":[{"id":12034,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12024,"src":"10354:8:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12033,"name":"_doWeightedExitChainedReferenceReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12088,"src":"10310:43:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":12035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10310:53:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":12028,"id":12036,"nodeType":"Return","src":"10303:60:76"}]}}]},"id":12046,"implemented":true,"kind":"function","modifiers":[],"name":"_doExitPoolChainedReferenceReplacements","nodeType":"FunctionDefinition","parameters":{"id":12025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12022,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":12046,"src":"10159:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$11552","typeString":"enum VaultActions.PoolKind"},"typeName":{"id":12021,"name":"PoolKind","nodeType":"UserDefinedTypeName","referencedDeclaration":11552,"src":"10159:8:76","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$11552","typeString":"enum VaultActions.PoolKind"}},"visibility":"internal"},{"constant":false,"id":12024,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":12046,"src":"10174:21:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12023,"name":"bytes","nodeType":"ElementaryTypeName","src":"10174:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10158:38:76"},"returnParameters":{"id":12028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12027,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12046,"src":"10230:12:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12026,"name":"bytes","nodeType":"ElementaryTypeName","src":"10230:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10229:14:76"},"scope":12166,"src":"10110:336:76","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":12087,"nodeType":"Block","src":"10559:621:76","statements":[{"assignments":[12056],"declarations":[{"constant":false,"id":12056,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":12087,"src":"10569:34:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$976","typeString":"enum WeightedPoolUserData.ExitKind"},"typeName":{"id":12055,"name":"WeightedPoolUserData.ExitKind","nodeType":"UserDefinedTypeName","referencedDeclaration":976,"src":"10569:29:76","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$976","typeString":"enum WeightedPoolUserData.ExitKind"}},"visibility":"internal"}],"id":12061,"initialValue":{"arguments":[{"id":12059,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12048,"src":"10636:8:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":12057,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"10606:20:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1193_$","typeString":"type(library WeightedPoolUserData)"}},"id":12058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exitKind","nodeType":"MemberAccess","referencedDeclaration":1006,"src":"10606:29:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_enum$_ExitKind_$976_$","typeString":"function (bytes memory) pure returns (enum WeightedPoolUserData.ExitKind)"}},"id":12060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10606:39:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$976","typeString":"enum WeightedPoolUserData.ExitKind"}},"nodeType":"VariableDeclarationStatement","src":"10569:76:76"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ExitKind_$976","typeString":"enum WeightedPoolUserData.ExitKind"},"id":12066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12062,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12056,"src":"10660:4:76","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$976","typeString":"enum WeightedPoolUserData.ExitKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":12063,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"10668:20:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1193_$","typeString":"type(library WeightedPoolUserData)"}},"id":12064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":976,"src":"10668:29:76","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$976_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},"id":12065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_ONE_TOKEN_OUT","nodeType":"MemberAccess","src":"10668:60:76","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$976","typeString":"enum WeightedPoolUserData.ExitKind"}},"src":"10660:68:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ExitKind_$976","typeString":"enum WeightedPoolUserData.ExitKind"},"id":12076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12072,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12056,"src":"10829:4:76","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$976","typeString":"enum WeightedPoolUserData.ExitKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":12073,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"10837:20:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1193_$","typeString":"type(library WeightedPoolUserData)"}},"id":12074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":976,"src":"10837:29:76","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$976_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},"id":12075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"MemberAccess","src":"10837:57:76","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$976","typeString":"enum WeightedPoolUserData.ExitKind"}},"src":"10829:65:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12084,"nodeType":"Block","src":"10989:185:76","statements":[{"expression":{"id":12082,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12048,"src":"11155:8:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":12052,"id":12083,"nodeType":"Return","src":"11148:15:76"}]},"id":12085,"nodeType":"IfStatement","src":"10825:349:76","trueBody":{"id":12081,"nodeType":"Block","src":"10896:87:76","statements":[{"expression":{"arguments":[{"id":12078,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12048,"src":"10963:8:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12077,"name":"_doWeightedExactBptInForTokensOutReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12165,"src":"10917:45:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":12079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10917:55:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":12052,"id":12080,"nodeType":"Return","src":"10910:62:76"}]}},"id":12086,"nodeType":"IfStatement","src":"10656:518:76","trueBody":{"id":12071,"nodeType":"Block","src":"10730:89:76","statements":[{"expression":{"arguments":[{"id":12068,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12048,"src":"10799:8:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12067,"name":"_doWeightedExactBptInForOneTokenOutReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12128,"src":"10751:47:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":12069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10751:57:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":12052,"id":12070,"nodeType":"Return","src":"10744:64:76"}]}}]},"id":12088,"implemented":true,"kind":"function","modifiers":[],"name":"_doWeightedExitChainedReferenceReplacements","nodeType":"FunctionDefinition","parameters":{"id":12049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12048,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":12088,"src":"10505:21:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12047,"name":"bytes","nodeType":"ElementaryTypeName","src":"10505:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10504:23:76"},"returnParameters":{"id":12052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12051,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12088,"src":"10545:12:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12050,"name":"bytes","nodeType":"ElementaryTypeName","src":"10545:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10544:14:76"},"scope":12166,"src":"10452:728:76","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":12127,"nodeType":"Block","src":"11297:494:76","statements":[{"assignments":[12096,12098],"declarations":[{"constant":false,"id":12096,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":12127,"src":"11308:19:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12095,"name":"uint256","nodeType":"ElementaryTypeName","src":"11308:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12098,"mutability":"mutable","name":"tokenIndex","nodeType":"VariableDeclaration","scope":12127,"src":"11329:18:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12097,"name":"uint256","nodeType":"ElementaryTypeName","src":"11329:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12103,"initialValue":{"arguments":[{"id":12101,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12090,"src":"11394:8:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":12099,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"11351:20:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1193_$","typeString":"type(library WeightedPoolUserData)"}},"id":12100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exactBptInForTokenOut","nodeType":"MemberAccess","referencedDeclaration":1125,"src":"11351:42:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$","typeString":"function (bytes memory) pure returns (uint256,uint256)"}},"id":12102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11351:52:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11307:96:76"},{"condition":{"arguments":[{"id":12105,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12096,"src":"11438:11:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12104,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"11418:19:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11418:32:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12125,"nodeType":"Block","src":"11653:132:76","statements":[{"expression":{"id":12123,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12090,"src":"11766:8:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":12094,"id":12124,"nodeType":"Return","src":"11759:15:76"}]},"id":12126,"nodeType":"IfStatement","src":"11414:371:76","trueBody":{"id":12122,"nodeType":"Block","src":"11452:195:76","statements":[{"expression":{"id":12111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12107,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12096,"src":"11466:11:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12109,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12096,"src":"11506:11:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12108,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"11480:25:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":12110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11480:38:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11466:52:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12112,"nodeType":"ExpressionStatement","src":"11466:52:76"},{"expression":{"arguments":[{"expression":{"expression":{"id":12115,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"11550:20:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1193_$","typeString":"type(library WeightedPoolUserData)"}},"id":12116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":976,"src":"11550:29:76","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$976_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},"id":12117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_ONE_TOKEN_OUT","nodeType":"MemberAccess","src":"11550:60:76","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$976","typeString":"enum WeightedPoolUserData.ExitKind"}},{"id":12118,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12096,"src":"11612:11:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12119,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12098,"src":"11625:10:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ExitKind_$976","typeString":"enum WeightedPoolUserData.ExitKind"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12113,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"11539:3:76","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"11539:10:76","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11539:97:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":12094,"id":12121,"nodeType":"Return","src":"11532:104:76"}]}}]},"id":12128,"implemented":true,"kind":"function","modifiers":[],"name":"_doWeightedExactBptInForOneTokenOutReplacements","nodeType":"FunctionDefinition","parameters":{"id":12091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12090,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":12128,"src":"11243:21:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12089,"name":"bytes","nodeType":"ElementaryTypeName","src":"11243:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11242:23:76"},"returnParameters":{"id":12094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12093,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12128,"src":"11283:12:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12092,"name":"bytes","nodeType":"ElementaryTypeName","src":"11283:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11282:14:76"},"scope":12166,"src":"11186:605:76","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":12164,"nodeType":"Block","src":"11906:458:76","statements":[{"assignments":[12136],"declarations":[{"constant":false,"id":12136,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":12164,"src":"11916:19:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12135,"name":"uint256","nodeType":"ElementaryTypeName","src":"11916:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12141,"initialValue":{"arguments":[{"id":12139,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12130,"src":"11982:8:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":12137,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"11938:20:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1193_$","typeString":"type(library WeightedPoolUserData)"}},"id":12138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exactBptInForTokensOut","nodeType":"MemberAccess","referencedDeclaration":1145,"src":"11938:43:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (bytes memory) pure returns (uint256)"}},"id":12140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11938:53:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11916:75:76"},{"condition":{"arguments":[{"id":12143,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12136,"src":"12026:11:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12142,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"12006:19:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12006:32:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12162,"nodeType":"Block","src":"12226:132:76","statements":[{"expression":{"id":12160,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12130,"src":"12339:8:76","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":12134,"id":12161,"nodeType":"Return","src":"12332:15:76"}]},"id":12163,"nodeType":"IfStatement","src":"12002:356:76","trueBody":{"id":12159,"nodeType":"Block","src":"12040:180:76","statements":[{"expression":{"id":12149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12145,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12136,"src":"12054:11:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12147,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12136,"src":"12094:11:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12146,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"12068:25:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":12148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12068:38:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12054:52:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12150,"nodeType":"ExpressionStatement","src":"12054:52:76"},{"expression":{"arguments":[{"expression":{"expression":{"id":12153,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"12138:20:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1193_$","typeString":"type(library WeightedPoolUserData)"}},"id":12154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":976,"src":"12138:29:76","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$976_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},"id":12155,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"MemberAccess","src":"12138:57:76","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$976","typeString":"enum WeightedPoolUserData.ExitKind"}},{"id":12156,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12136,"src":"12197:11:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ExitKind_$976","typeString":"enum WeightedPoolUserData.ExitKind"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12151,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"12127:3:76","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12152,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"12127:10:76","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12127:82:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":12134,"id":12158,"nodeType":"Return","src":"12120:89:76"}]}}]},"id":12165,"implemented":true,"kind":"function","modifiers":[],"name":"_doWeightedExactBptInForTokensOutReplacements","nodeType":"FunctionDefinition","parameters":{"id":12131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12130,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":12165,"src":"11852:21:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12129,"name":"bytes","nodeType":"ElementaryTypeName","src":"11852:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11851:23:76"},"returnParameters":{"id":12134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12133,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12165,"src":"11892:12:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12132,"name":"bytes","nodeType":"ElementaryTypeName","src":"11892:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11891:14:76"},"scope":12166,"src":"11797:567:76","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":12167,"src":"1546:10820:76"}],"src":"688:11679:76"},"id":76},"contracts/relayer/VaultPermit.sol":{"ast":{"absolutePath":"contracts/relayer/VaultPermit.sol","exportedSymbols":{"VaultPermit":[12248]},"id":12249,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12168,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:77"},{"id":12169,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:77"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","id":12170,"nodeType":"ImportDirective","scope":12249,"sourceUnit":2001,"src":"747:93:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol","id":12171,"nodeType":"ImportDirective","scope":12249,"sourceUnit":2024,"src":"841:96:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":12172,"nodeType":"ImportDirective","scope":12249,"sourceUnit":3372,"src":"938:65:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":12173,"nodeType":"ImportDirective","scope":12249,"sourceUnit":10571,"src":"1005:35:77","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":12175,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":10570,"src":"1302:19:77","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$10570","typeString":"contract IBaseRelayerLibrary"}},"id":12176,"nodeType":"InheritanceSpecifier","src":"1302:19:77"}],"contractDependencies":[8042,10570],"contractKind":"contract","documentation":{"id":12174,"nodeType":"StructuredDocumentation","src":"1042:226:77","text":" @title VaultPermit\n @notice Allows users to use permit (where supported) to approve the Balancer Vault to use their tokens\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":12248,"linearizedBaseContracts":[12248,10570,8042],"name":"VaultPermit","nodeType":"ContractDefinition","nodes":[{"body":{"id":12209,"nodeType":"Block","src":"1525:83:77","statements":[{"expression":{"arguments":[{"id":12196,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12180,"src":"1548:5:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":12199,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10514,"src":"1563:8:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3371_$","typeString":"function () view returns (contract IVault)"}},"id":12200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1563:10:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}],"id":12198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1555:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12197,"name":"address","nodeType":"ElementaryTypeName","src":"1555:7:77","typeDescriptions":{}}},"id":12201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1555:19:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12202,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12182,"src":"1576:5:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12203,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12184,"src":"1583:8:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12204,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12186,"src":"1593:1:77","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":12205,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12188,"src":"1596:1:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":12206,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12190,"src":"1599:1:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":12193,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12178,"src":"1535:5:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$2000","typeString":"contract IERC20Permit"}},"id":12195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":1985,"src":"1535:12:77","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":12207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1535:66:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12208,"nodeType":"ExpressionStatement","src":"1535:66:77"}]},"functionSelector":"8d64cfbc","id":12210,"implemented":true,"kind":"function","modifiers":[],"name":"vaultPermit","nodeType":"FunctionDefinition","parameters":{"id":12191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12178,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":12210,"src":"1358:18:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$2000","typeString":"contract IERC20Permit"},"typeName":{"id":12177,"name":"IERC20Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":2000,"src":"1358:12:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$2000","typeString":"contract IERC20Permit"}},"visibility":"internal"},{"constant":false,"id":12180,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":12210,"src":"1386:13:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12179,"name":"address","nodeType":"ElementaryTypeName","src":"1386:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12182,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":12210,"src":"1409:13:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12181,"name":"uint256","nodeType":"ElementaryTypeName","src":"1409:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12184,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":12210,"src":"1432:16:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12183,"name":"uint256","nodeType":"ElementaryTypeName","src":"1432:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12186,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":12210,"src":"1458:7:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":12185,"name":"uint8","nodeType":"ElementaryTypeName","src":"1458:5:77","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":12188,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":12210,"src":"1475:9:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12187,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1475:7:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12190,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":12210,"src":"1494:9:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12189,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1494:7:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1348:161:77"},"returnParameters":{"id":12192,"nodeType":"ParameterList","parameters":[],"src":"1525:0:77"},"scope":12248,"src":"1328:280:77","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":12246,"nodeType":"Block","src":"1838:91:77","statements":[{"expression":{"arguments":[{"id":12232,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12214,"src":"1861:6:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":12235,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10514,"src":"1877:8:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3371_$","typeString":"function () view returns (contract IVault)"}},"id":12236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1877:10:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}],"id":12234,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1869:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12233,"name":"address","nodeType":"ElementaryTypeName","src":"1869:7:77","typeDescriptions":{}}},"id":12237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1869:19:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12238,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12216,"src":"1890:5:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12239,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12218,"src":"1897:6:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12240,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12220,"src":"1905:7:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":12241,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12222,"src":"1914:1:77","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":12242,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12224,"src":"1917:1:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":12243,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12226,"src":"1920:1:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":12229,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12212,"src":"1848:5:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitDAI_$2023","typeString":"contract IERC20PermitDAI"}},"id":12231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":2022,"src":"1848:12:77","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,bool,uint8,bytes32,bytes32) external"}},"id":12244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1848:74:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12245,"nodeType":"ExpressionStatement","src":"1848:74:77"}]},"functionSelector":"959fc17a","id":12247,"implemented":true,"kind":"function","modifiers":[],"name":"vaultPermitDAI","nodeType":"FunctionDefinition","parameters":{"id":12227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12212,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":12247,"src":"1647:21:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitDAI_$2023","typeString":"contract IERC20PermitDAI"},"typeName":{"id":12211,"name":"IERC20PermitDAI","nodeType":"UserDefinedTypeName","referencedDeclaration":2023,"src":"1647:15:77","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitDAI_$2023","typeString":"contract IERC20PermitDAI"}},"visibility":"internal"},{"constant":false,"id":12214,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":12247,"src":"1678:14:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12213,"name":"address","nodeType":"ElementaryTypeName","src":"1678:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12216,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":12247,"src":"1702:13:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12215,"name":"uint256","nodeType":"ElementaryTypeName","src":"1702:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12218,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":12247,"src":"1725:14:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12217,"name":"uint256","nodeType":"ElementaryTypeName","src":"1725:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12220,"mutability":"mutable","name":"allowed","nodeType":"VariableDeclaration","scope":12247,"src":"1749:12:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12219,"name":"bool","nodeType":"ElementaryTypeName","src":"1749:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":12222,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":12247,"src":"1771:7:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":12221,"name":"uint8","nodeType":"ElementaryTypeName","src":"1771:5:77","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":12224,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":12247,"src":"1788:9:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12223,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1788:7:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12226,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":12247,"src":"1807:9:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12225,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1807:7:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1637:185:77"},"returnParameters":{"id":12228,"nodeType":"ParameterList","parameters":[],"src":"1838:0:77"},"scope":12248,"src":"1614:315:77","stateMutability":"payable","virtual":false,"visibility":"public"}],"scope":12249,"src":"1269:662:77"}],"src":"688:1244:77"},"id":77},"contracts/relayer/special/DoubleEntrypointFixRelayer.sol":{"ast":{"absolutePath":"contracts/relayer/special/DoubleEntrypointFixRelayer.sol","exportedSymbols":{"DoubleEntrypointFixRelayer":[12788]},"id":12789,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12250,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:78"},{"id":12251,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:78"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol","id":12252,"nodeType":"ImportDirective","scope":12789,"sourceUnit":964,"src":"747:83:78","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol","id":12253,"nodeType":"ImportDirective","scope":12789,"sourceUnit":1194,"src":"831:87:78","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":12254,"nodeType":"ImportDirective","scope":12789,"sourceUnit":3372,"src":"919:65:78","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol","id":12255,"nodeType":"ImportDirective","scope":12789,"sourceUnit":2817,"src":"985:78:78","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol","id":12256,"nodeType":"ImportDirective","scope":12789,"sourceUnit":3907,"src":"1065:77:78","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":12257,"nodeType":"ImportDirective","scope":12789,"sourceUnit":7745,"src":"1143:79:78","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12259,"name":"IFlashLoanRecipient","nodeType":"UserDefinedTypeName","referencedDeclaration":2816,"src":"1511:19:78","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$2816","typeString":"contract IFlashLoanRecipient"}},"id":12260,"nodeType":"InheritanceSpecifier","src":"1511:19:78"}],"contractDependencies":[2816],"contractKind":"contract","documentation":{"id":12258,"nodeType":"StructuredDocumentation","src":"1224:247:78","text":" @title DoubleEntrypointFixRelayer\n @notice This contract performs mitigations to safeguard funds affected by double-entrypoint tokens (mostly Synthetix\n tokens). It doesn't use the standard relayer architecture to simplify the code."},"fullyImplemented":true,"id":12788,"linearizedBaseContracts":[12788,2816],"name":"DoubleEntrypointFixRelayer","nodeType":"ContractDefinition","nodes":[{"id":12263,"libraryName":{"id":12261,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7744,"src":"1543:9:78","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$7744","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1537:27:78","typeName":{"id":12262,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1557:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}},{"constant":true,"functionSelector":"fd6ea58d","id":12268,"mutability":"constant","name":"BTC_STABLE_POOL_ADDRESS","nodeType":"VariableDeclaration","scope":12788,"src":"1614:99:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":12264,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1614:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307846656164643338396135633432373935324438666462383035374436433862613131353663433536","id":12266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1670:42:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xFeadd389a5c427952D8fdb8057D6C8ba1156cC56"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":12265,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"1663:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":12267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1663:50:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"e4231540","id":12271,"mutability":"constant","name":"BTC_STABLE_POOL_ID","nodeType":"VariableDeclaration","scope":12788,"src":"1719:111:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12269,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1719:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866656164643338396135633432373935326438666462383035376436633862613131353663633536303030303030303030303030303030303030303030303636","id":12270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1764:66:78","typeDescriptions":{"typeIdentifier":"t_rational_115194588061805410800048782926783719656362775004276595086089087795503944433766_by_1","typeString":"int_const 1151...(70 digits omitted)...3766"},"value":"0xfeadd389a5c427952d8fdb8057d6c8ba1156cc56000000000000000000000066"},"visibility":"public"},{"constant":true,"functionSelector":"9b452931","id":12276,"mutability":"constant","name":"wBTC","nodeType":"VariableDeclaration","scope":12788,"src":"1881:80:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":12272,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1881:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307832323630464143354535353432613737334161343466424366654466374331393362633243353939","id":12274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1918:42:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":12273,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"1911:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":12275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1911:50:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"5fbc1031","id":12281,"mutability":"constant","name":"renBTC","nodeType":"VariableDeclaration","scope":12788,"src":"1967:82:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":12277,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1967:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307845423443323738316534656241383034434539613938303343363764303839333433366242323744","id":12279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2006:42:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":12278,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"1999:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":12280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1999:50:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"e043f56f","id":12286,"mutability":"constant","name":"sBTC","nodeType":"VariableDeclaration","scope":12788,"src":"2055:80:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":12282,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2055:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307866453138626536623342643838413244324137663932386430303239324537613939363343664336","id":12284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2092:42:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":12283,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"2085:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":12285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2085:50:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"6ad3aaa4","id":12291,"mutability":"constant","name":"sBTC_IMPLEMENTATION","nodeType":"VariableDeclaration","scope":12788,"src":"2141:95:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":12287,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2141:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307831384663433334626445616146394533623639443235303033343335323763306339393562316436","id":12289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2193:42:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0x18FcC34bdEaaF9E3b69D2500343527c0c995b1d6"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":12288,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"2186:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":12290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2186:50:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"0a5e13dc","id":12296,"mutability":"constant","name":"SNX_WEIGHTED_POOL_ADDRESS","nodeType":"VariableDeclaration","scope":12788,"src":"2243:101:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":12292,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2243:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307830373266313442383541446436333438384444614438386638353546646134413939643661433942","id":12294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2301:42:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0x072f14B85ADd63488DDaD88f855Fda4A99d6aC9B"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":12293,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"2294:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":12295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2294:50:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"5dc80bd0","id":12299,"mutability":"constant","name":"SNX_WEIGHTED_POOL_ID","nodeType":"VariableDeclaration","scope":12788,"src":"2350:113:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12297,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2350:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830373266313462383561646436333438386464616438386638353566646134613939643661633962303030323030303030303030303030303030303030303237","id":12298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2397:66:78","typeDescriptions":{"typeIdentifier":"t_rational_3249374757253751268355276259122675239274040171040535564758290851987386794023_by_1","typeString":"int_const 3249...(68 digits omitted)...4023"},"value":"0x072f14b85add63488ddad88f855fda4a99d6ac9b000200000000000000000027"},"visibility":"public"},{"constant":true,"functionSelector":"e8d6101e","id":12304,"mutability":"constant","name":"SNX","nodeType":"VariableDeclaration","scope":12788,"src":"2469:79:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":12300,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2469:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307843303131613733656538353736466234364635453163353735316341334239466530616632613646","id":12302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2505:42:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":12301,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"2498:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":12303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2498:50:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"ad5c4648","id":12309,"mutability":"constant","name":"WETH","nodeType":"VariableDeclaration","scope":12788,"src":"2554:80:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":12305,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2554:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307843303261614133396232323346453844304130653543344632376541443930383343373536436332","id":12307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2591:42:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":12306,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"2584:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":12308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2584:50:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"a2abb55f","id":12314,"mutability":"constant","name":"SNX_IMPLEMENTATION","nodeType":"VariableDeclaration","scope":12788,"src":"2640:94:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":12310,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"2640:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307836333930333264333930303837356134636634393630614436623965653434313635376141393343","id":12312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2691:42:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0x639032d3900875a4cf4960aD6b9ee441657aA93C"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":12311,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"2684:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":12313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2684:50:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"id":12317,"mutability":"constant","name":"_STABLE_POOL_EXIT_KIND_EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"VariableDeclaration","scope":12788,"src":"2858:79:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12315,"name":"uint256","nodeType":"ElementaryTypeName","src":"2858:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":12316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2936:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":false,"id":12319,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":12788,"src":"2944:31:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":12318,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"2944:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"private"},{"constant":false,"id":12321,"mutability":"immutable","name":"_protocolFeeCollector","nodeType":"VariableDeclaration","scope":12788,"src":"2981:62:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":12320,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":2906,"src":"2981:22:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"visibility":"private"},{"body":{"id":12336,"nodeType":"Block","src":"3076:97:78","statements":[{"expression":{"id":12328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12326,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12319,"src":"3086:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12327,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12323,"src":"3095:5:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"src":"3086:14:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":12329,"nodeType":"ExpressionStatement","src":"3086:14:78"},{"expression":{"id":12334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12330,"name":"_protocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12321,"src":"3110:21:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12331,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12323,"src":"3134:5:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":12332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":3358,"src":"3134:30:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$2906_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":12333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3134:32:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"src":"3110:56:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"id":12335,"nodeType":"ExpressionStatement","src":"3110:56:78"}]},"id":12337,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":12324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12323,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":12337,"src":"3062:12:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":12322,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"3062:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"}],"src":"3061:14:78"},"returnParameters":{"id":12325,"nodeType":"ParameterList","parameters":[],"src":"3076:0:78"},"scope":12788,"src":"3050:123:78","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12344,"nodeType":"Block","src":"3228:30:78","statements":[{"expression":{"id":12342,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12319,"src":"3245:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"functionReturnParameters":12341,"id":12343,"nodeType":"Return","src":"3238:13:78"}]},"functionSelector":"8d928af8","id":12345,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":12338,"nodeType":"ParameterList","parameters":[],"src":"3196:2:78"},"returnParameters":{"id":12341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12340,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12345,"src":"3220:6:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":12339,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"3220:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"}],"src":"3219:8:78"},"scope":12788,"src":"3179:79:78","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":12465,"nodeType":"Block","src":"3583:1272:78","statements":[{"assignments":[12352],"declarations":[{"constant":false,"id":12352,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":12465,"src":"3593:22:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":12350,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"3593:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12351,"nodeType":"ArrayTypeName","src":"3593:8:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":12358,"initialValue":{"arguments":[{"hexValue":"33","id":12356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3631:1:78","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"id":12355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3618:12:78","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":12353,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"3622:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12354,"nodeType":"ArrayTypeName","src":"3622:8:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":12357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3618:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3593:40:78"},{"expression":{"id":12363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12359,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12352,"src":"3643:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":12361,"indexExpression":{"hexValue":"30","id":12360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3650:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3643:9:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12362,"name":"wBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12276,"src":"3655:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"3643:16:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12364,"nodeType":"ExpressionStatement","src":"3643:16:78"},{"expression":{"id":12369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12365,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12352,"src":"3669:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":12367,"indexExpression":{"hexValue":"31","id":12366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3676:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3669:9:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12368,"name":"renBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12281,"src":"3681:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"3669:18:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12370,"nodeType":"ExpressionStatement","src":"3669:18:78"},{"expression":{"id":12375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12371,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12352,"src":"3697:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":12373,"indexExpression":{"hexValue":"32","id":12372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3704:1:78","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3697:9:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12374,"name":"sBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12286,"src":"3709:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"3697:16:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12376,"nodeType":"ExpressionStatement","src":"3697:16:78"},{"assignments":[12378],"declarations":[{"constant":false,"id":12378,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":12465,"src":"3723:19:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12377,"name":"uint256","nodeType":"ElementaryTypeName","src":"3723:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12384,"initialValue":{"arguments":[{"expression":{"id":12381,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3779:3:78","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3779:10:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":12379,"name":"BTC_STABLE_POOL_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12268,"src":"3745:23:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1903,"src":"3745:33:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":12383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3745:45:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3723:67:78"},{"expression":{"arguments":[{"id":12386,"name":"sBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12286,"src":"4089:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},{"arguments":[{"arguments":[{"id":12391,"name":"_protocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12321,"src":"4118:21:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}],"id":12390,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4110:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12389,"name":"address","nodeType":"ElementaryTypeName","src":"4110:7:78","typeDescriptions":{}}},"id":12392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4110:30:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12387,"name":"sBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12286,"src":"4095:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1903,"src":"4095:14:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":12393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4095:46:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12385,"name":"_withdrawFromProtocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12635,"src":"4055:33:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1964_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":12394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4055:87:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12395,"nodeType":"ExpressionStatement","src":"4055:87:78"},{"assignments":[12397],"declarations":[{"constant":false,"id":12397,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":12465,"src":"4182:21:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12396,"name":"bytes","nodeType":"ElementaryTypeName","src":"4182:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":12403,"initialValue":{"arguments":[{"id":12400,"name":"_STABLE_POOL_EXIT_KIND_EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12317,"src":"4217:50:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12401,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12378,"src":"4269:11:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12398,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4206:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12399,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"4206:10:78","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4206:75:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4182:99:78"},{"assignments":[12407],"declarations":[{"constant":false,"id":12407,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":12465,"src":"4291:37:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":12406,"name":"IVault.ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3173,"src":"4291:22:78","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"}],"id":12422,"initialValue":{"arguments":[{"arguments":[{"id":12411,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12352,"src":"4377:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":12410,"name":"_asIAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3644,"src":"4367:9:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$returns$_t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr_$","typeString":"function (contract IERC20[] memory) pure returns (contract IAsset[] memory)"}},"id":12412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4367:17:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},{"arguments":[{"expression":{"id":12416,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12352,"src":"4412:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":12417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4412:13:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4398:13:78","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":12413,"name":"uint256","nodeType":"ElementaryTypeName","src":"4402:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12414,"nodeType":"ArrayTypeName","src":"4402:9:78","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":12418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4398:28:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":12419,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12397,"src":"4440:8:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":12420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4462:5:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12408,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"4331:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3371_$","typeString":"type(contract IVault)"}},"id":12409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitPoolRequest","nodeType":"MemberAccess","referencedDeclaration":3173,"src":"4331:22:78","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ExitPoolRequest_$3173_storage_ptr_$","typeString":"type(struct IVault.ExitPoolRequest storage pointer)"}},"id":12421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4331:146:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"nodeType":"VariableDeclarationStatement","src":"4291:186:78"},{"expression":{"arguments":[{"id":12426,"name":"BTC_STABLE_POOL_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12271,"src":"4507:18:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":12427,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4527:3:78","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4527:10:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":12429,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4539:3:78","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4539:10:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":12431,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12407,"src":"4551:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12423,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12345,"src":"4487:8:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3371_$","typeString":"function () view returns (contract IVault)"}},"id":12424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4487:10:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":12425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exitPool","nodeType":"MemberAccess","referencedDeclaration":3162,"src":"4487:19:78","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_payable_$_t_struct$_ExitPoolRequest_$3173_memory_ptr_$returns$__$","typeString":"function (bytes32,address,address payable,struct IVault.ExitPoolRequest memory) external"}},"id":12432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4487:72:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12433,"nodeType":"ExpressionStatement","src":"4487:72:78"},{"assignments":[12437],"declarations":[{"constant":false,"id":12437,"mutability":"mutable","name":"sBTCEntrypoints","nodeType":"VariableDeclaration","scope":12465,"src":"4644:31:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":12435,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"4644:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12436,"nodeType":"ArrayTypeName","src":"4644:8:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":12443,"initialValue":{"arguments":[{"hexValue":"32","id":12441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4691:1:78","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":12440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4678:12:78","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":12438,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"4682:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12439,"nodeType":"ArrayTypeName","src":"4682:8:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":12442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4678:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4644:49:78"},{"expression":{"id":12448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12444,"name":"sBTCEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12437,"src":"4703:15:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":12446,"indexExpression":{"hexValue":"30","id":12445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4719:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4703:18:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12447,"name":"sBTC_IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12291,"src":"4724:19:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"4703:40:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12449,"nodeType":"ExpressionStatement","src":"4703:40:78"},{"expression":{"id":12459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12450,"name":"sBTCEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12437,"src":"4753:15:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":12452,"indexExpression":{"hexValue":"31","id":12451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4769:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4753:18:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":12456,"name":"sBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12286,"src":"4789:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}],"id":12455,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4781:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12454,"name":"address","nodeType":"ElementaryTypeName","src":"4781:7:78","typeDescriptions":{}}},"id":12457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4781:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12453,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"4774:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":12458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4774:21:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"4753:42:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12460,"nodeType":"ExpressionStatement","src":"4753:42:78"},{"expression":{"arguments":[{"id":12462,"name":"sBTCEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12437,"src":"4832:15:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":12461,"name":"sweepDoubleEntrypointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12745,"src":"4805:26:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$returns$__$","typeString":"function (contract IERC20[] memory)"}},"id":12463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4805:43:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12464,"nodeType":"ExpressionStatement","src":"4805:43:78"}]},"documentation":{"id":12346,"nodeType":"StructuredDocumentation","src":"3264:276:78","text":" @notice Fully exit the BTC Stable Pool into its three components (wBTC, renBTC and sBTC), with no price impact\n nor swap fees. This relayer must have been previously approved by the caller, and proper permissions granted by\n Balancer Governance."},"functionSelector":"cbc87782","id":12466,"implemented":true,"kind":"function","modifiers":[],"name":"exitBTCStablePool","nodeType":"FunctionDefinition","parameters":{"id":12347,"nodeType":"ParameterList","parameters":[],"src":"3571:2:78"},"returnParameters":{"id":12348,"nodeType":"ParameterList","parameters":[],"src":"3583:0:78"},"scope":12788,"src":"3545:1310:78","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12582,"nodeType":"Block","src":"5173:1243:78","statements":[{"assignments":[12473],"declarations":[{"constant":false,"id":12473,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":12582,"src":"5183:22:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":12471,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"5183:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12472,"nodeType":"ArrayTypeName","src":"5183:8:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":12479,"initialValue":{"arguments":[{"hexValue":"32","id":12477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5221:1:78","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":12476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5208:12:78","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":12474,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"5212:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12475,"nodeType":"ArrayTypeName","src":"5212:8:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":12478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5208:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5183:40:78"},{"expression":{"id":12484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12480,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12473,"src":"5233:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":12482,"indexExpression":{"hexValue":"30","id":12481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5240:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5233:9:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12483,"name":"SNX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12304,"src":"5245:3:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"5233:15:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12485,"nodeType":"ExpressionStatement","src":"5233:15:78"},{"expression":{"id":12490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12486,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12473,"src":"5258:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":12488,"indexExpression":{"hexValue":"31","id":12487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5265:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5258:9:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12489,"name":"WETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12309,"src":"5270:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"5258:16:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12491,"nodeType":"ExpressionStatement","src":"5258:16:78"},{"assignments":[12493],"declarations":[{"constant":false,"id":12493,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":12582,"src":"5284:19:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12492,"name":"uint256","nodeType":"ElementaryTypeName","src":"5284:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12499,"initialValue":{"arguments":[{"expression":{"id":12496,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5342:3:78","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5342:10:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":12494,"name":"SNX_WEIGHTED_POOL_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12296,"src":"5306:25:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1903,"src":"5306:35:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":12498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5306:47:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5284:69:78"},{"expression":{"arguments":[{"id":12501,"name":"SNX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12304,"src":"5650:3:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},{"arguments":[{"arguments":[{"id":12506,"name":"_protocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12321,"src":"5677:21:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}],"id":12505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5669:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12504,"name":"address","nodeType":"ElementaryTypeName","src":"5669:7:78","typeDescriptions":{}}},"id":12507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5669:30:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12502,"name":"SNX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12304,"src":"5655:3:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1903,"src":"5655:13:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":12508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5655:45:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12500,"name":"_withdrawFromProtocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12635,"src":"5616:33:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1964_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":12509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5616:85:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12510,"nodeType":"ExpressionStatement","src":"5616:85:78"},{"assignments":[12512],"declarations":[{"constant":false,"id":12512,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":12582,"src":"5741:21:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12511,"name":"bytes","nodeType":"ElementaryTypeName","src":"5741:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":12520,"initialValue":{"arguments":[{"expression":{"expression":{"id":12515,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"5776:20:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1193_$","typeString":"type(library WeightedPoolUserData)"}},"id":12516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":976,"src":"5776:29:78","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$976_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},"id":12517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"MemberAccess","src":"5776:57:78","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$976","typeString":"enum WeightedPoolUserData.ExitKind"}},{"id":12518,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12493,"src":"5835:11:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ExitKind_$976","typeString":"enum WeightedPoolUserData.ExitKind"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12513,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5765:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12514,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"5765:10:78","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5765:82:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5741:106:78"},{"assignments":[12524],"declarations":[{"constant":false,"id":12524,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":12582,"src":"5857:37:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":12523,"name":"IVault.ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3173,"src":"5857:22:78","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"}],"id":12539,"initialValue":{"arguments":[{"arguments":[{"id":12528,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12473,"src":"5943:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":12527,"name":"_asIAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3644,"src":"5933:9:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$returns$_t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr_$","typeString":"function (contract IERC20[] memory) pure returns (contract IAsset[] memory)"}},"id":12529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5933:17:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},{"arguments":[{"expression":{"id":12533,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12473,"src":"5978:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":12534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5978:13:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5964:13:78","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":12530,"name":"uint256","nodeType":"ElementaryTypeName","src":"5968:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12531,"nodeType":"ArrayTypeName","src":"5968:9:78","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":12535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5964:28:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":12536,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12512,"src":"6006:8:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":12537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6028:5:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IAsset_$2658_$dyn_memory_ptr","typeString":"contract IAsset[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12525,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"5897:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3371_$","typeString":"type(contract IVault)"}},"id":12526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitPoolRequest","nodeType":"MemberAccess","referencedDeclaration":3173,"src":"5897:22:78","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ExitPoolRequest_$3173_storage_ptr_$","typeString":"type(struct IVault.ExitPoolRequest storage pointer)"}},"id":12538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5897:146:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"nodeType":"VariableDeclarationStatement","src":"5857:186:78"},{"expression":{"arguments":[{"id":12543,"name":"SNX_WEIGHTED_POOL_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12299,"src":"6073:20:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":12544,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6095:3:78","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6095:10:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":12546,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6107:3:78","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6107:10:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":12548,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12524,"src":"6119:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_struct$_ExitPoolRequest_$3173_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12540,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12345,"src":"6053:8:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3371_$","typeString":"function () view returns (contract IVault)"}},"id":12541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6053:10:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":12542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exitPool","nodeType":"MemberAccess","referencedDeclaration":3162,"src":"6053:19:78","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_payable_$_t_struct$_ExitPoolRequest_$3173_memory_ptr_$returns$__$","typeString":"function (bytes32,address,address payable,struct IVault.ExitPoolRequest memory) external"}},"id":12549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6053:74:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12550,"nodeType":"ExpressionStatement","src":"6053:74:78"},{"assignments":[12554],"declarations":[{"constant":false,"id":12554,"mutability":"mutable","name":"snxEntrypoints","nodeType":"VariableDeclaration","scope":12582,"src":"6211:30:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":12552,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"6211:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12553,"nodeType":"ArrayTypeName","src":"6211:8:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":12560,"initialValue":{"arguments":[{"hexValue":"32","id":12558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6257:1:78","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":12557,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6244:12:78","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":12555,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"6248:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12556,"nodeType":"ArrayTypeName","src":"6248:8:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":12559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6244:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6211:48:78"},{"expression":{"id":12565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12561,"name":"snxEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12554,"src":"6269:14:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":12563,"indexExpression":{"hexValue":"30","id":12562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6284:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6269:17:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12564,"name":"SNX_IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12314,"src":"6289:18:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"6269:38:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12566,"nodeType":"ExpressionStatement","src":"6269:38:78"},{"expression":{"id":12576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12567,"name":"snxEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12554,"src":"6317:14:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":12569,"indexExpression":{"hexValue":"31","id":12568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6332:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6317:17:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":12573,"name":"SNX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12304,"src":"6352:3:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}],"id":12572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6344:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12571,"name":"address","nodeType":"ElementaryTypeName","src":"6344:7:78","typeDescriptions":{}}},"id":12574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6344:12:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12570,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"6337:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":12575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6337:20:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"6317:40:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12577,"nodeType":"ExpressionStatement","src":"6317:40:78"},{"expression":{"arguments":[{"id":12579,"name":"snxEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12554,"src":"6394:14:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":12578,"name":"sweepDoubleEntrypointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12745,"src":"6367:26:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$returns$__$","typeString":"function (contract IERC20[] memory)"}},"id":12580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6367:42:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12581,"nodeType":"ExpressionStatement","src":"6367:42:78"}]},"documentation":{"id":12467,"nodeType":"StructuredDocumentation","src":"4861:267:78","text":" @notice Fully exit the SNX Weighted Pool into its two components (SNX and WETH), with no price impact nor swap\n fees. This relayer must have been previously approved by the caller, and proper permissions granted by\n Balancer Governance."},"functionSelector":"69af9c7e","id":12583,"implemented":true,"kind":"function","modifiers":[],"name":"exitSNXWeightedPool","nodeType":"FunctionDefinition","parameters":{"id":12468,"nodeType":"ParameterList","parameters":[],"src":"5161:2:78"},"returnParameters":{"id":12469,"nodeType":"ParameterList","parameters":[],"src":"5173:0:78"},"scope":12788,"src":"5133:1283:78","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12634,"nodeType":"Block","src":"6504:254:78","statements":[{"assignments":[12593],"declarations":[{"constant":false,"id":12593,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":12634,"src":"6514:22:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":12591,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"6514:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12592,"nodeType":"ArrayTypeName","src":"6514:8:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":12599,"initialValue":{"arguments":[{"hexValue":"31","id":12597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6552:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":12596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6539:12:78","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":12594,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"6543:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12595,"nodeType":"ArrayTypeName","src":"6543:8:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":12598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6539:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6514:40:78"},{"expression":{"id":12604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12600,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12593,"src":"6564:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":12602,"indexExpression":{"hexValue":"30","id":12601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6571:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6564:9:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12603,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12585,"src":"6576:5:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"6564:17:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12605,"nodeType":"ExpressionStatement","src":"6564:17:78"},{"assignments":[12610],"declarations":[{"constant":false,"id":12610,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":12634,"src":"6591:24:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12608,"name":"uint256","nodeType":"ElementaryTypeName","src":"6591:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12609,"nodeType":"ArrayTypeName","src":"6591:9:78","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":12616,"initialValue":{"arguments":[{"hexValue":"31","id":12614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6632:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":12613,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6618:13:78","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":12611,"name":"uint256","nodeType":"ElementaryTypeName","src":"6622:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12612,"nodeType":"ArrayTypeName","src":"6622:9:78","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":12615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6618:16:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6591:43:78"},{"expression":{"id":12621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12617,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12610,"src":"6644:7:78","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12619,"indexExpression":{"hexValue":"30","id":12618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6652:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6644:10:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12620,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12587,"src":"6657:6:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6644:19:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12622,"nodeType":"ExpressionStatement","src":"6644:19:78"},{"expression":{"arguments":[{"id":12626,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12593,"src":"6718:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":12627,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12610,"src":"6726:7:78","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"arguments":[{"id":12630,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12319,"src":"6743:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}],"id":12629,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6735:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12628,"name":"address","nodeType":"ElementaryTypeName","src":"6735:7:78","typeDescriptions":{}}},"id":12631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6735:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12623,"name":"_protocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12321,"src":"6674:21:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$2906","typeString":"contract IProtocolFeesCollector"}},"id":12625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdrawCollectedFees","nodeType":"MemberAccess","referencedDeclaration":2866,"src":"6674:43:78","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (contract IERC20[] memory,uint256[] memory,address) external"}},"id":12632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6674:77:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12633,"nodeType":"ExpressionStatement","src":"6674:77:78"}]},"id":12635,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawFromProtocolFeeCollector","nodeType":"FunctionDefinition","parameters":{"id":12588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12585,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":12635,"src":"6465:12:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":12584,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"6465:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":12587,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12635,"src":"6479:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12586,"name":"uint256","nodeType":"ElementaryTypeName","src":"6479:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6464:30:78"},"returnParameters":{"id":12589,"nodeType":"ParameterList","parameters":[],"src":"6504:0:78"},"scope":12788,"src":"6422:336:78","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12701,"nodeType":"Block","src":"6897:431:78","statements":[{"assignments":[12642],"declarations":[{"constant":false,"id":12642,"mutability":"mutable","name":"snxEntrypoints","nodeType":"VariableDeclaration","scope":12701,"src":"6907:30:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":12640,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"6907:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12641,"nodeType":"ArrayTypeName","src":"6907:8:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":12648,"initialValue":{"arguments":[{"hexValue":"32","id":12646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6953:1:78","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":12645,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6940:12:78","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":12643,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"6944:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12644,"nodeType":"ArrayTypeName","src":"6944:8:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":12647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6940:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6907:48:78"},{"expression":{"id":12653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12649,"name":"snxEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12642,"src":"6965:14:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":12651,"indexExpression":{"hexValue":"30","id":12650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6980:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6965:17:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12652,"name":"SNX_IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12314,"src":"6985:18:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"6965:38:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12654,"nodeType":"ExpressionStatement","src":"6965:38:78"},{"expression":{"id":12664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12655,"name":"snxEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12642,"src":"7013:14:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":12657,"indexExpression":{"hexValue":"31","id":12656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7028:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7013:17:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":12661,"name":"SNX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12304,"src":"7048:3:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}],"id":12660,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7040:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12659,"name":"address","nodeType":"ElementaryTypeName","src":"7040:7:78","typeDescriptions":{}}},"id":12662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7040:12:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12658,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"7033:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":12663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7033:20:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"7013:40:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12665,"nodeType":"ExpressionStatement","src":"7013:40:78"},{"expression":{"arguments":[{"id":12667,"name":"snxEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12642,"src":"7091:14:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":12666,"name":"sweepDoubleEntrypointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12745,"src":"7064:26:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$returns$__$","typeString":"function (contract IERC20[] memory)"}},"id":12668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7064:42:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12669,"nodeType":"ExpressionStatement","src":"7064:42:78"},{"assignments":[12673],"declarations":[{"constant":false,"id":12673,"mutability":"mutable","name":"sBTCEntrypoints","nodeType":"VariableDeclaration","scope":12701,"src":"7117:31:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":12671,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"7117:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12672,"nodeType":"ArrayTypeName","src":"7117:8:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":12679,"initialValue":{"arguments":[{"hexValue":"32","id":12677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7164:1:78","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":12676,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7151:12:78","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":12674,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"7155:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12675,"nodeType":"ArrayTypeName","src":"7155:8:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":12678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7151:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7117:49:78"},{"expression":{"id":12684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12680,"name":"sBTCEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12673,"src":"7176:15:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":12682,"indexExpression":{"hexValue":"30","id":12681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7192:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7176:18:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12683,"name":"sBTC_IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12291,"src":"7197:19:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"7176:40:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12685,"nodeType":"ExpressionStatement","src":"7176:40:78"},{"expression":{"id":12695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12686,"name":"sBTCEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12673,"src":"7226:15:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":12688,"indexExpression":{"hexValue":"31","id":12687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7242:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7226:18:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":12692,"name":"sBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12286,"src":"7262:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}],"id":12691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7254:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12690,"name":"address","nodeType":"ElementaryTypeName","src":"7254:7:78","typeDescriptions":{}}},"id":12693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7254:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12689,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"7247:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1964_$","typeString":"type(contract IERC20)"}},"id":12694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7247:21:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"7226:42:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12696,"nodeType":"ExpressionStatement","src":"7226:42:78"},{"expression":{"arguments":[{"id":12698,"name":"sBTCEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12673,"src":"7305:15:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":12697,"name":"sweepDoubleEntrypointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12745,"src":"7278:26:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$returns$__$","typeString":"function (contract IERC20[] memory)"}},"id":12699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7278:43:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12700,"nodeType":"ExpressionStatement","src":"7278:43:78"}]},"documentation":{"id":12636,"nodeType":"StructuredDocumentation","src":"6764:97:78","text":" @notice Sweep all SNX and sBTC from the Vault into the Protocol Fee Collector."},"functionSelector":"5f5fb036","id":12702,"implemented":true,"kind":"function","modifiers":[],"name":"sweepSNXsBTC","nodeType":"FunctionDefinition","parameters":{"id":12637,"nodeType":"ParameterList","parameters":[],"src":"6887:2:78"},"returnParameters":{"id":12638,"nodeType":"ParameterList","parameters":[],"src":"6897:0:78"},"scope":12788,"src":"6866:462:78","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12744,"nodeType":"Block","src":"7548:186:78","statements":[{"assignments":[12713],"declarations":[{"constant":false,"id":12713,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":12744,"src":"7558:24:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12711,"name":"uint256","nodeType":"ElementaryTypeName","src":"7558:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12712,"nodeType":"ArrayTypeName","src":"7558:9:78","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":12720,"initialValue":{"arguments":[{"expression":{"id":12717,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12706,"src":"7599:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":12718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7599:13:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7585:13:78","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":12714,"name":"uint256","nodeType":"ElementaryTypeName","src":"7589:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12715,"nodeType":"ArrayTypeName","src":"7589:9:78","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":12719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7585:28:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7558:55:78"},{"expression":{"id":12733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12721,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12713,"src":"7623:7:78","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12723,"indexExpression":{"hexValue":"30","id":12722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7631:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7623:10:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":12730,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12319,"src":"7664:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}],"id":12729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7656:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12728,"name":"address","nodeType":"ElementaryTypeName","src":"7656:7:78","typeDescriptions":{}}},"id":12731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7656:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"baseExpression":{"id":12724,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12706,"src":"7636:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":12726,"indexExpression":{"hexValue":"30","id":12725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7643:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7636:9:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":1903,"src":"7636:19:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":12732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7636:36:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7623:49:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12734,"nodeType":"ExpressionStatement","src":"7623:49:78"},{"expression":{"arguments":[{"id":12738,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7699:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_DoubleEntrypointFixRelayer_$12788","typeString":"contract DoubleEntrypointFixRelayer"}},{"id":12739,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12706,"src":"7705:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":12740,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12713,"src":"7713:7:78","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"3078","id":12741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7722:4:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DoubleEntrypointFixRelayer_$12788","typeString":"contract DoubleEntrypointFixRelayer"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":12735,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12319,"src":"7682:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"id":12737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"flashLoan","nodeType":"MemberAccess","referencedDeclaration":3308,"src":"7682:16:78","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IFlashLoanRecipient_$2816_$_t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IFlashLoanRecipient,contract IERC20[] memory,uint256[] memory,bytes memory) external"}},"id":12742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7682:45:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12743,"nodeType":"ExpressionStatement","src":"7682:45:78"}]},"documentation":{"id":12703,"nodeType":"StructuredDocumentation","src":"7334:142:78","text":" @notice Sweep a double-entrypoint token into the Protocol Fee Collector by passing all entrypoints of a given\n token."},"functionSelector":"0306ae12","id":12745,"implemented":true,"kind":"function","modifiers":[],"name":"sweepDoubleEntrypointToken","nodeType":"FunctionDefinition","parameters":{"id":12707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12706,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":12745,"src":"7517:22:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":12704,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"7517:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12705,"nodeType":"ArrayTypeName","src":"7517:8:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"7516:24:78"},"returnParameters":{"id":12708,"nodeType":"ParameterList","parameters":[],"src":"7548:0:78"},"scope":12788,"src":"7481:253:78","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2815],"body":{"id":12786,"nodeType":"Block","src":"8137:142:78","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12762,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8156:3:78","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8156:10:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":12766,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12319,"src":"8178:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}],"id":12765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8170:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12764,"name":"address","nodeType":"ElementaryTypeName","src":"8170:7:78","typeDescriptions":{}}},"id":12767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8170:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8156:29:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":12769,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"8187:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1743_$","typeString":"type(library Errors)"}},"id":12770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"CALLER_NOT_VAULT","nodeType":"MemberAccess","referencedDeclaration":1325,"src":"8187:23:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12761,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1211,1230],"referencedDeclaration":1211,"src":"8147:8:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":12771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8147:64:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12772,"nodeType":"ExpressionStatement","src":"8147:64:78"},{"expression":{"arguments":[{"arguments":[{"id":12779,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12319,"src":"8252:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}],"id":12778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8244:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12777,"name":"address","nodeType":"ElementaryTypeName","src":"8244:7:78","typeDescriptions":{}}},"id":12780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8244:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":12781,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12752,"src":"8261:7:78","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12783,"indexExpression":{"hexValue":"30","id":12782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8269:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8261:10:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":12773,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12749,"src":"8221:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":12775,"indexExpression":{"hexValue":"30","id":12774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8228:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8221:9:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":7679,"src":"8221:22:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1964_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1964_$","typeString":"function (contract IERC20,address,uint256)"}},"id":12784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8221:51:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12785,"nodeType":"ExpressionStatement","src":"8221:51:78"}]},"documentation":{"id":12746,"nodeType":"StructuredDocumentation","src":"7740:228:78","text":" @dev Flash loan callback. Assumes that it receives a flashloan of multiple assets (all entrypoints of a Synthetix\n synth). We only need to repay the first loan as that will automatically all other loans."},"functionSelector":"f04f2707","id":12787,"implemented":true,"kind":"function","modifiers":[],"name":"receiveFlashLoan","nodeType":"FunctionDefinition","overrides":{"id":12759,"nodeType":"OverrideSpecifier","overrides":[],"src":"8128:8:78"},"parameters":{"id":12758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12749,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":12787,"src":"8008:22:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":12747,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"8008:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":12748,"nodeType":"ArrayTypeName","src":"8008:8:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$1964_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":12752,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":12787,"src":"8040:24:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12750,"name":"uint256","nodeType":"ElementaryTypeName","src":"8040:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12751,"nodeType":"ArrayTypeName","src":"8040:9:78","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":12755,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12787,"src":"8074:16:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12753,"name":"uint256","nodeType":"ElementaryTypeName","src":"8074:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12754,"nodeType":"ArrayTypeName","src":"8074:9:78","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":12757,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12787,"src":"8100:12:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12756,"name":"bytes","nodeType":"ElementaryTypeName","src":"8100:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7998:120:78"},"returnParameters":{"id":12760,"nodeType":"ParameterList","parameters":[],"src":"8137:0:78"},"scope":12788,"src":"7973:306:78","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":12789,"src":"1472:6809:78"}],"src":"688:7594:78"},"id":78},"contracts/test/MockBaseRelayerLibrary.sol":{"ast":{"absolutePath":"contracts/test/MockBaseRelayerLibrary.sol","exportedSymbols":{"MockBaseRelayerLibrary":[12855]},"id":12856,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12790,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"731:23:79"},{"id":12791,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"755:33:79"},{"absolutePath":"contracts/relayer/BaseRelayerLibrary.sol","file":"../relayer/BaseRelayerLibrary.sol","id":12792,"nodeType":"ImportDirective","scope":12856,"sourceUnit":10067,"src":"883:43:79","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12793,"name":"BaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":10066,"src":"963:18:79","typeDescriptions":{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$10066","typeString":"contract BaseRelayerLibrary"}},"id":12794,"nodeType":"InheritanceSpecifier","src":"963:18:79"}],"contractDependencies":[8042,10066,10570],"contractKind":"contract","fullyImplemented":true,"id":12855,"linearizedBaseContracts":[12855,10066,10570,8042],"name":"MockBaseRelayerLibrary","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":12798,"name":"ChainedReferenceValueRead","nodeType":"EventDefinition","parameters":{"id":12797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12796,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":12798,"src":"1020:13:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12795,"name":"uint256","nodeType":"ElementaryTypeName","src":"1020:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1019:15:79"},"src":"988:47:79"},{"body":{"id":12806,"nodeType":"Block","src":"1093:2:79","statements":[]},"id":12807,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":12803,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12800,"src":"1086:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}}],"id":12804,"modifierName":{"id":12802,"name":"BaseRelayerLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10066,"src":"1067:18:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseRelayerLibrary_$10066_$","typeString":"type(contract BaseRelayerLibrary)"}},"nodeType":"ModifierInvocation","src":"1067:25:79"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":12801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12800,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":12807,"src":"1053:12:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":12799,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"1053:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1052:14:79"},"returnParameters":{"id":12805,"nodeType":"ParameterList","parameters":[],"src":"1093:0:79"},"scope":12855,"src":"1041:54:79","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12818,"nodeType":"Block","src":"1172:51:79","statements":[{"expression":{"arguments":[{"id":12815,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12809,"src":"1209:6:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12814,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[9943],"referencedDeclaration":9943,"src":"1189:19:79","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1189:27:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12813,"id":12817,"nodeType":"Return","src":"1182:34:79"}]},"functionSelector":"ec6edf00","id":12819,"implemented":true,"kind":"function","modifiers":[],"name":"isChainedReference","nodeType":"FunctionDefinition","parameters":{"id":12810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12809,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12819,"src":"1129:14:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12808,"name":"uint256","nodeType":"ElementaryTypeName","src":"1129:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1128:16:79"},"returnParameters":{"id":12813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12812,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12819,"src":"1166:4:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12811,"name":"bool","nodeType":"ElementaryTypeName","src":"1166:4:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1165:6:79"},"scope":12855,"src":"1101:122:79","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":12831,"nodeType":"Block","src":"1298:54:79","statements":[{"expression":{"arguments":[{"id":12827,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12821,"src":"1334:3:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12828,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12823,"src":"1339:5:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12826,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[9976],"referencedDeclaration":9976,"src":"1308:25:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1308:37:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12830,"nodeType":"ExpressionStatement","src":"1308:37:79"}]},"functionSelector":"c518e531","id":12832,"implemented":true,"kind":"function","modifiers":[],"name":"setChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":12824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12821,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":12832,"src":"1263:11:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12820,"name":"uint256","nodeType":"ElementaryTypeName","src":"1263:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12823,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":12832,"src":"1276:13:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12822,"name":"uint256","nodeType":"ElementaryTypeName","src":"1276:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1262:28:79"},"returnParameters":{"id":12825,"nodeType":"ParameterList","parameters":[],"src":"1298:0:79"},"scope":12855,"src":"1229:123:79","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12843,"nodeType":"Block","src":"1412:79:79","statements":[{"eventCall":{"arguments":[{"arguments":[{"id":12839,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12834,"src":"1479:3:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12838,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[10002],"referencedDeclaration":10002,"src":"1453:25:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":12840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1453:30:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12837,"name":"ChainedReferenceValueRead","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12798,"src":"1427:25:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":12841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1427:57:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12842,"nodeType":"EmitStatement","src":"1422:62:79"}]},"functionSelector":"5967b696","id":12844,"implemented":true,"kind":"function","modifiers":[],"name":"getChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":12835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12834,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":12844,"src":"1392:11:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12833,"name":"uint256","nodeType":"ElementaryTypeName","src":"1392:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1391:13:79"},"returnParameters":{"id":12836,"nodeType":"ParameterList","parameters":[],"src":"1412:0:79"},"scope":12855,"src":"1358:133:79","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12853,"nodeType":"Block","src":"1573:29:79","statements":[{"expression":{"id":12851,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12846,"src":"1590:5:79","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":12850,"id":12852,"nodeType":"Return","src":"1583:12:79"}]},"functionSelector":"56cc064e","id":12854,"implemented":true,"kind":"function","modifiers":[],"name":"bytesTunnel","nodeType":"FunctionDefinition","parameters":{"id":12847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12846,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","scope":12854,"src":"1518:18:79","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12845,"name":"bytes","nodeType":"ElementaryTypeName","src":"1518:5:79","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1517:20:79"},"returnParameters":{"id":12850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12849,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12854,"src":"1559:12:79","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12848,"name":"bytes","nodeType":"ElementaryTypeName","src":"1559:5:79","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1558:14:79"},"scope":12855,"src":"1497:105:79","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":12856,"src":"928:676:79"}],"src":"731:874:79"},"id":79},"contracts/test/MockBatchRelayerLibrary.sol":{"ast":{"absolutePath":"contracts/test/MockBatchRelayerLibrary.sol","exportedSymbols":{"MockBatchRelayerLibrary":[12906]},"id":12907,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12857,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"731:23:80"},{"id":12858,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"755:33:80"},{"absolutePath":"contracts/BatchRelayerLibrary.sol","file":"../BatchRelayerLibrary.sol","id":12859,"nodeType":"ImportDirective","scope":12907,"sourceUnit":8678,"src":"790:36:80","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12860,"name":"BatchRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":8677,"src":"864:19:80","typeDescriptions":{"typeIdentifier":"t_contract$_BatchRelayerLibrary_$8677","typeString":"contract BatchRelayerLibrary"}},"id":12861,"nodeType":"InheritanceSpecifier","src":"864:19:80"}],"contractDependencies":[8042,8677,9493,10066,10232,10492,10570,10913,11112,11276,12166,12248],"contractKind":"contract","fullyImplemented":true,"id":12906,"linearizedBaseContracts":[12906,8677,12248,12166,11112,11276,10913,10492,10232,10066,9493,10570,8042],"name":"MockBatchRelayerLibrary","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":12865,"name":"ChainedReferenceValueRead","nodeType":"EventDefinition","parameters":{"id":12864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12863,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":12865,"src":"922:13:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12862,"name":"uint256","nodeType":"ElementaryTypeName","src":"922:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"921:15:80"},"src":"890:47:80"},{"body":{"id":12879,"nodeType":"Block","src":"1081:2:80","statements":[]},"id":12880,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":12874,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12867,"src":"1058:5:80","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},{"id":12875,"name":"wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12869,"src":"1065:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},{"id":12876,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12871,"src":"1073:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}}],"id":12877,"modifierName":{"id":12873,"name":"BatchRelayerLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8677,"src":"1038:19:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BatchRelayerLibrary_$8677_$","typeString":"type(contract BatchRelayerLibrary)"}},"nodeType":"ModifierInvocation","src":"1038:42:80"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":12872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12867,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":12880,"src":"964:12:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"},"typeName":{"id":12866,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3371,"src":"964:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3371","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":12869,"mutability":"mutable","name":"wstETH","nodeType":"VariableDeclaration","scope":12880,"src":"986:13:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":12868,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"986:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":12871,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":12880,"src":"1009:22:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"},"typeName":{"id":12870,"name":"IBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":175,"src":"1009:15:80","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}},"visibility":"internal"}],"src":"954:83:80"},"returnParameters":{"id":12878,"nodeType":"ParameterList","parameters":[],"src":"1081:0:80"},"scope":12906,"src":"943:140:80","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12892,"nodeType":"Block","src":"1158:54:80","statements":[{"expression":{"arguments":[{"id":12888,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12882,"src":"1194:3:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12884,"src":"1199:5:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12887,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[9976],"referencedDeclaration":9976,"src":"1168:25:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1168:37:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12891,"nodeType":"ExpressionStatement","src":"1168:37:80"}]},"functionSelector":"c518e531","id":12893,"implemented":true,"kind":"function","modifiers":[],"name":"setChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":12885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12882,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":12893,"src":"1123:11:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12881,"name":"uint256","nodeType":"ElementaryTypeName","src":"1123:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12884,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":12893,"src":"1136:13:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12883,"name":"uint256","nodeType":"ElementaryTypeName","src":"1136:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1122:28:80"},"returnParameters":{"id":12886,"nodeType":"ParameterList","parameters":[],"src":"1158:0:80"},"scope":12906,"src":"1089:123:80","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12904,"nodeType":"Block","src":"1272:79:80","statements":[{"eventCall":{"arguments":[{"arguments":[{"id":12900,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12895,"src":"1339:3:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12899,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[10002],"referencedDeclaration":10002,"src":"1313:25:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":12901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1313:30:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12898,"name":"ChainedReferenceValueRead","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12865,"src":"1287:25:80","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":12902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1287:57:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12903,"nodeType":"EmitStatement","src":"1282:62:80"}]},"functionSelector":"5967b696","id":12905,"implemented":true,"kind":"function","modifiers":[],"name":"getChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":12896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12895,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":12905,"src":"1252:11:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12894,"name":"uint256","nodeType":"ElementaryTypeName","src":"1252:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1251:13:80"},"returnParameters":{"id":12897,"nodeType":"ParameterList","parameters":[],"src":"1272:0:80"},"scope":12906,"src":"1218:133:80","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":12907,"src":"828:525:80"}],"src":"731:623:80"},"id":80},"contracts/test/MockStETH.sol":{"ast":{"absolutePath":"contracts/test/MockStETH.sol","exportedSymbols":{"MockStETH":[12959]},"id":12960,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12908,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"731:23:81"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","id":12909,"nodeType":"ImportDirective","scope":12960,"sourceUnit":2598,"src":"756:76:81","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":12910,"nodeType":"ImportDirective","scope":12960,"sourceUnit":4561,"src":"834:72:81","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","file":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","id":12911,"nodeType":"ImportDirective","scope":12960,"sourceUnit":7913,"src":"907:71:81","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12912,"name":"TestToken","nodeType":"UserDefinedTypeName","referencedDeclaration":7912,"src":"1002:9:81","typeDescriptions":{"typeIdentifier":"t_contract$_TestToken_$7912","typeString":"contract TestToken"}},"id":12913,"nodeType":"InheritanceSpecifier","src":"1002:9:81"},{"baseName":{"id":12914,"name":"IstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2597,"src":"1013:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"id":12915,"nodeType":"InheritanceSpecifier","src":"1013:6:81"}],"contractDependencies":[1772,1964,2000,2597,3628,6428,6919,6976,7085,7912],"contractKind":"contract","fullyImplemented":true,"id":12959,"linearizedBaseContracts":[12959,2597,7912,7085,3628,6428,1772,2000,6976,6919,1964],"name":"MockStETH","nodeType":"ContractDefinition","nodes":[{"body":{"id":12929,"nodeType":"Block","src":"1160:64:81","statements":[]},"id":12930,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":12924,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12917,"src":"1136:4:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":12925,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12919,"src":"1142:6:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":12926,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12921,"src":"1150:8:81","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":12927,"modifierName":{"id":12923,"name":"TestToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7912,"src":"1126:9:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TestToken_$7912_$","typeString":"type(contract TestToken)"}},"nodeType":"ModifierInvocation","src":"1126:33:81"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":12922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12917,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":12930,"src":"1047:18:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12916,"name":"string","nodeType":"ElementaryTypeName","src":"1047:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12919,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":12930,"src":"1075:20:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12918,"name":"string","nodeType":"ElementaryTypeName","src":"1075:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12921,"mutability":"mutable","name":"decimals","nodeType":"VariableDeclaration","scope":12930,"src":"1105:14:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":12920,"name":"uint8","nodeType":"ElementaryTypeName","src":"1105:5:81","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1037:88:81"},"returnParameters":{"id":12928,"nodeType":"ParameterList","parameters":[],"src":"1160:0:81"},"scope":12959,"src":"1026:198:81","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"anonymous":false,"id":12934,"name":"EthStaked","nodeType":"EventDefinition","parameters":{"id":12933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12932,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12934,"src":"1246:14:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12931,"name":"uint256","nodeType":"ElementaryTypeName","src":"1246:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1245:16:81"},"src":"1230:32:81"},{"baseFunctions":[2596],"body":{"id":12957,"nodeType":"Block","src":"1337:106:81","statements":[{"expression":{"arguments":[{"expression":{"id":12943,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1353:3:81","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1353:10:81","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":12945,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1365:3:81","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1365:9:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12942,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6812,"src":"1347:5:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1347:28:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12948,"nodeType":"ExpressionStatement","src":"1347:28:81"},{"eventCall":{"arguments":[{"expression":{"id":12950,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1400:3:81","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1400:9:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12949,"name":"EthStaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12934,"src":"1390:9:81","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":12952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1390:20:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12953,"nodeType":"EmitStatement","src":"1385:25:81"},{"expression":{"expression":{"id":12954,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1427:3:81","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1427:9:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12941,"id":12956,"nodeType":"Return","src":"1420:16:81"}]},"functionSelector":"a1903eab","id":12958,"implemented":true,"kind":"function","modifiers":[],"name":"submit","nodeType":"FunctionDefinition","overrides":{"id":12938,"nodeType":"OverrideSpecifier","overrides":[],"src":"1310:8:81"},"parameters":{"id":12937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12936,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12958,"src":"1284:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12935,"name":"address","nodeType":"ElementaryTypeName","src":"1284:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1283:9:81"},"returnParameters":{"id":12941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12940,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12958,"src":"1328:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12939,"name":"uint256","nodeType":"ElementaryTypeName","src":"1328:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1327:9:81"},"scope":12959,"src":"1268:175:81","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":12960,"src":"980:465:81"}],"src":"731:715:81"},"id":81},"contracts/test/MockStaticATokenLM.sol":{"ast":{"absolutePath":"contracts/test/MockStaticATokenLM.sol","exportedSymbols":{"MockStaticATokenLM":[13409]},"id":13410,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12961,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:82"},{"id":12962,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:82"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol","id":12963,"nodeType":"ImportDirective","scope":13410,"sourceUnit":2585,"src":"747:85:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol","file":"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol","id":12964,"nodeType":"ImportDirective","scope":13410,"sourceUnit":7867,"src":"834:71:82","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12965,"name":"ERC20Mock","nodeType":"UserDefinedTypeName","referencedDeclaration":7866,"src":"938:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Mock_$7866","typeString":"contract ERC20Mock"}},"id":12966,"nodeType":"InheritanceSpecifier","src":"938:9:82"},{"baseName":{"id":12967,"name":"IStaticATokenLM","nodeType":"UserDefinedTypeName","referencedDeclaration":2584,"src":"949:15:82","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2584","typeString":"contract IStaticATokenLM"}},"id":12968,"nodeType":"InheritanceSpecifier","src":"949:15:82"}],"contractDependencies":[1964,2584,6919,7866],"contractKind":"contract","fullyImplemented":true,"id":13409,"linearizedBaseContracts":[13409,2584,7866,6919,1964],"name":"MockStaticATokenLM","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":12980,"name":"Deposit","nodeType":"EventDefinition","parameters":{"id":12979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12970,"indexed":false,"mutability":"mutable","name":"depositor","nodeType":"VariableDeclaration","scope":12980,"src":"1168:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12969,"name":"address","nodeType":"ElementaryTypeName","src":"1168:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12972,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":12980,"src":"1187:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12971,"name":"address","nodeType":"ElementaryTypeName","src":"1187:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12974,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12980,"src":"1206:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12973,"name":"uint256","nodeType":"ElementaryTypeName","src":"1206:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12976,"indexed":false,"mutability":"mutable","name":"referralCode","nodeType":"VariableDeclaration","scope":12980,"src":"1222:19:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12975,"name":"uint16","nodeType":"ElementaryTypeName","src":"1222:6:82","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":12978,"indexed":false,"mutability":"mutable","name":"fromUnderlying","nodeType":"VariableDeclaration","scope":12980,"src":"1243:19:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12977,"name":"bool","nodeType":"ElementaryTypeName","src":"1243:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1167:96:82"},"src":"1154:110:82"},{"anonymous":false,"id":12992,"name":"Withdraw","nodeType":"EventDefinition","parameters":{"id":12991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12982,"indexed":false,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":12992,"src":"1285:13:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12981,"name":"address","nodeType":"ElementaryTypeName","src":"1285:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12984,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":12992,"src":"1300:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12983,"name":"address","nodeType":"ElementaryTypeName","src":"1300:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12986,"indexed":false,"mutability":"mutable","name":"staticAmount","nodeType":"VariableDeclaration","scope":12992,"src":"1319:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12985,"name":"uint256","nodeType":"ElementaryTypeName","src":"1319:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12988,"indexed":false,"mutability":"mutable","name":"dynamicAmount","nodeType":"VariableDeclaration","scope":12992,"src":"1341:21:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12987,"name":"uint256","nodeType":"ElementaryTypeName","src":"1341:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12990,"indexed":false,"mutability":"mutable","name":"toUnderlying","nodeType":"VariableDeclaration","scope":12992,"src":"1364:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12989,"name":"bool","nodeType":"ElementaryTypeName","src":"1364:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1284:98:82"},"src":"1270:113:82"},{"constant":true,"id":12995,"mutability":"constant","name":"_rate","nodeType":"VariableDeclaration","scope":13409,"src":"1389:37:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12993,"name":"uint256","nodeType":"ElementaryTypeName","src":"1389:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653237","id":12994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1422:4:82","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000"},"value":"1e27"},"visibility":"private"},{"constant":false,"id":12997,"mutability":"immutable","name":"_ASSET","nodeType":"VariableDeclaration","scope":13409,"src":"1432:31:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":12996,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1432:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"private"},{"constant":false,"id":12999,"mutability":"immutable","name":"_ATOKEN","nodeType":"VariableDeclaration","scope":13409,"src":"1469:32:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":12998,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1469:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"private"},{"body":{"id":13022,"nodeType":"Block","src":"1663:67:82","statements":[{"expression":{"id":13016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13014,"name":"_ASSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12997,"src":"1673:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13015,"name":"underlyingAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13005,"src":"1682:15:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"1673:24:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":13017,"nodeType":"ExpressionStatement","src":"1673:24:82"},{"expression":{"id":13020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13018,"name":"_ATOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12999,"src":"1707:7:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13019,"name":"aToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13007,"src":"1717:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"src":"1707:16:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"id":13021,"nodeType":"ExpressionStatement","src":"1707:16:82"}]},"id":13023,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":13010,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13001,"src":"1649:4:82","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":13011,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13003,"src":"1655:6:82","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":13012,"modifierName":{"id":13009,"name":"ERC20Mock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7866,"src":"1639:9:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20Mock_$7866_$","typeString":"type(contract ERC20Mock)"}},"nodeType":"ModifierInvocation","src":"1639:23:82"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":13008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13001,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":13023,"src":"1529:18:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13000,"name":"string","nodeType":"ElementaryTypeName","src":"1529:6:82","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13003,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":13023,"src":"1557:20:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13002,"name":"string","nodeType":"ElementaryTypeName","src":"1557:6:82","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13005,"mutability":"mutable","name":"underlyingAsset","nodeType":"VariableDeclaration","scope":13023,"src":"1587:22:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":13004,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1587:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":13007,"mutability":"mutable","name":"aToken","nodeType":"VariableDeclaration","scope":13023,"src":"1619:13:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":13006,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1619:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1519:119:82"},"returnParameters":{"id":13013,"nodeType":"ParameterList","parameters":[],"src":"1663:0:82"},"scope":13409,"src":"1508:222:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2578],"body":{"id":13031,"nodeType":"Block","src":"1846:30:82","statements":[{"expression":{"id":13029,"name":"_ASSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12997,"src":"1863:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"functionReturnParameters":13028,"id":13030,"nodeType":"Return","src":"1856:13:82"}]},"functionSelector":"4800d97f","id":13032,"implemented":true,"kind":"function","modifiers":[],"name":"ASSET","nodeType":"FunctionDefinition","overrides":{"id":13025,"nodeType":"OverrideSpecifier","overrides":[],"src":"1820:8:82"},"parameters":{"id":13024,"nodeType":"ParameterList","parameters":[],"src":"1803:2:82"},"returnParameters":{"id":13028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13027,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13032,"src":"1838:6:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":13026,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1838:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1837:8:82"},"scope":13409,"src":"1789:87:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2573],"body":{"id":13040,"nodeType":"Block","src":"1940:31:82","statements":[{"expression":{"id":13038,"name":"_ATOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12999,"src":"1957:7:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"functionReturnParameters":13037,"id":13039,"nodeType":"Return","src":"1950:14:82"}]},"functionSelector":"51c0e061","id":13041,"implemented":true,"kind":"function","modifiers":[],"name":"ATOKEN","nodeType":"FunctionDefinition","overrides":{"id":13034,"nodeType":"OverrideSpecifier","overrides":[],"src":"1914:8:82"},"parameters":{"id":13033,"nodeType":"ParameterList","parameters":[],"src":"1897:2:82"},"returnParameters":{"id":13037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13036,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13041,"src":"1932:6:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":13035,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"1932:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1931:8:82"},"scope":13409,"src":"1882:89:82","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2563],"body":{"id":13051,"nodeType":"Block","src":"2095:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2112:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13047,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"2105:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2105:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13050,"nodeType":"ExpressionStatement","src":"2105:38:82"}]},"functionSelector":"b4dcfc77","id":13052,"implemented":true,"kind":"function","modifiers":[],"name":"LENDING_POOL","nodeType":"FunctionDefinition","overrides":{"id":13043,"nodeType":"OverrideSpecifier","overrides":[],"src":"2068:8:82"},"parameters":{"id":13042,"nodeType":"ParameterList","parameters":[],"src":"2051:2:82"},"returnParameters":{"id":13046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13045,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13052,"src":"2086:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13044,"name":"address","nodeType":"ElementaryTypeName","src":"2086:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2085:9:82"},"scope":13409,"src":"2030:120:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2482],"body":{"id":13060,"nodeType":"Block","src":"2211:29:82","statements":[{"expression":{"id":13058,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12995,"src":"2228:5:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13057,"id":13059,"nodeType":"Return","src":"2221:12:82"}]},"functionSelector":"2c4e722e","id":13061,"implemented":true,"kind":"function","modifiers":[],"name":"rate","nodeType":"FunctionDefinition","overrides":{"id":13054,"nodeType":"OverrideSpecifier","overrides":[],"src":"2184:8:82"},"parameters":{"id":13053,"nodeType":"ParameterList","parameters":[],"src":"2169:2:82"},"returnParameters":{"id":13057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13056,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13061,"src":"2202:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13055,"name":"uint256","nodeType":"ElementaryTypeName","src":"2202:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2201:9:82"},"scope":13409,"src":"2156:84:82","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[2364],"body":{"id":13086,"nodeType":"Block","src":"2414:113:82","statements":[{"eventCall":{"arguments":[{"expression":{"id":13076,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2437:3:82","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2437:10:82","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":13078,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13063,"src":"2449:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13079,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13065,"src":"2460:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13080,"name":"referralCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13067,"src":"2468:12:82","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":13081,"name":"fromUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13069,"src":"2482:14:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13075,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12980,"src":"2429:7:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint16_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,uint16,bool)"}},"id":13082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2429:68:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13083,"nodeType":"EmitStatement","src":"2424:73:82"},{"expression":{"id":13084,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13065,"src":"2514:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13074,"id":13085,"nodeType":"Return","src":"2507:13:82"}]},"functionSelector":"2f2cab87","id":13087,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","overrides":{"id":13071,"nodeType":"OverrideSpecifier","overrides":[],"src":"2387:8:82"},"parameters":{"id":13070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13063,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":13087,"src":"2272:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13062,"name":"address","nodeType":"ElementaryTypeName","src":"2272:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13065,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":13087,"src":"2299:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13064,"name":"uint256","nodeType":"ElementaryTypeName","src":"2299:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13067,"mutability":"mutable","name":"referralCode","nodeType":"VariableDeclaration","scope":13087,"src":"2323:19:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":13066,"name":"uint16","nodeType":"ElementaryTypeName","src":"2323:6:82","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":13069,"mutability":"mutable","name":"fromUnderlying","nodeType":"VariableDeclaration","scope":13087,"src":"2352:19:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13068,"name":"bool","nodeType":"ElementaryTypeName","src":"2352:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2262:115:82"},"returnParameters":{"id":13074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13073,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13087,"src":"2405:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13072,"name":"uint256","nodeType":"ElementaryTypeName","src":"2405:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2404:9:82"},"scope":13409,"src":"2246:281:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2378],"body":{"id":13116,"nodeType":"Block","src":"2680:139:82","statements":[{"eventCall":{"arguments":[{"expression":{"id":13102,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2704:3:82","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2704:10:82","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":13104,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13089,"src":"2716:9:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13105,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13091,"src":"2727:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":13107,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13091,"src":"2757:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13106,"name":"staticToDynamicAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13128,"src":"2735:21:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":13108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2735:29:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13109,"name":"toUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13093,"src":"2766:12:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13101,"name":"Withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12992,"src":"2695:8:82","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,uint256,bool)"}},"id":13110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2695:84:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13111,"nodeType":"EmitStatement","src":"2690:89:82"},{"expression":{"components":[{"id":13112,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13091,"src":"2797:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13113,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13091,"src":"2805:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13114,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2796:16:82","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":13100,"id":13115,"nodeType":"Return","src":"2789:23:82"}]},"functionSelector":"ead5d359","id":13117,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","overrides":{"id":13095,"nodeType":"OverrideSpecifier","overrides":[],"src":"2644:8:82"},"parameters":{"id":13094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13089,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":13117,"src":"2560:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13088,"name":"address","nodeType":"ElementaryTypeName","src":"2560:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13091,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":13117,"src":"2587:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13090,"name":"uint256","nodeType":"ElementaryTypeName","src":"2587:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13093,"mutability":"mutable","name":"toUnderlying","nodeType":"VariableDeclaration","scope":13117,"src":"2611:17:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13092,"name":"bool","nodeType":"ElementaryTypeName","src":"2611:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2550:84:82"},"returnParameters":{"id":13100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13097,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13117,"src":"2662:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13096,"name":"uint256","nodeType":"ElementaryTypeName","src":"2662:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13099,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13117,"src":"2671:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13098,"name":"uint256","nodeType":"ElementaryTypeName","src":"2671:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2661:18:82"},"scope":13409,"src":"2533:286:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2468],"body":{"id":13127,"nodeType":"Block","src":"2911:30:82","statements":[{"expression":{"id":13125,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13119,"src":"2928:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13124,"id":13126,"nodeType":"Return","src":"2921:13:82"}]},"functionSelector":"f57d0b40","id":13128,"implemented":true,"kind":"function","modifiers":[],"name":"staticToDynamicAmount","nodeType":"FunctionDefinition","overrides":{"id":13121,"nodeType":"OverrideSpecifier","overrides":[],"src":"2884:8:82"},"parameters":{"id":13120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13119,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":13128,"src":"2856:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13118,"name":"uint256","nodeType":"ElementaryTypeName","src":"2856:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2855:16:82"},"returnParameters":{"id":13124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13123,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13128,"src":"2902:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13122,"name":"uint256","nodeType":"ElementaryTypeName","src":"2902:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2901:9:82"},"scope":13409,"src":"2825:116:82","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[2476],"body":{"id":13138,"nodeType":"Block","src":"3035:30:82","statements":[{"expression":{"id":13136,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13130,"src":"3052:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13135,"id":13137,"nodeType":"Return","src":"3045:13:82"}]},"functionSelector":"36a5a6d6","id":13139,"implemented":true,"kind":"function","modifiers":[],"name":"dynamicToStaticAmount","nodeType":"FunctionDefinition","overrides":{"id":13132,"nodeType":"OverrideSpecifier","overrides":[],"src":"3008:8:82"},"parameters":{"id":13131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13130,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":13139,"src":"2978:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13129,"name":"uint256","nodeType":"ElementaryTypeName","src":"2978:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2977:16:82"},"returnParameters":{"id":13135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13134,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13139,"src":"3026:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13133,"name":"uint256","nodeType":"ElementaryTypeName","src":"3026:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3025:9:82"},"scope":13409,"src":"2947:118:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2410],"body":{"id":13161,"nodeType":"Block","src":"3231:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3248:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13157,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3241:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3241:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13160,"nodeType":"ExpressionStatement","src":"3241:38:82"}]},"functionSelector":"d505accf","id":13162,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","overrides":{"id":13155,"nodeType":"OverrideSpecifier","overrides":[],"src":"3222:8:82"},"parameters":{"id":13154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13141,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13162,"src":"3096:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13140,"name":"address","nodeType":"ElementaryTypeName","src":"3096:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13143,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13162,"src":"3113:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13142,"name":"address","nodeType":"ElementaryTypeName","src":"3113:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13145,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13162,"src":"3130:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13144,"name":"uint256","nodeType":"ElementaryTypeName","src":"3130:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13147,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13162,"src":"3147:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13146,"name":"uint256","nodeType":"ElementaryTypeName","src":"3147:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13149,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13162,"src":"3164:5:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":13148,"name":"uint8","nodeType":"ElementaryTypeName","src":"3164:5:82","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":13151,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13162,"src":"3179:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13150,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3179:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":13153,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13162,"src":"3196:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13152,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3196:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3086:123:82"},"returnParameters":{"id":13156,"nodeType":"ParameterList","parameters":[],"src":"3231:0:82"},"scope":13409,"src":"3071:215:82","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[2488],"body":{"id":13172,"nodeType":"Block","src":"3361:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3378:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13168,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3371:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3371:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13171,"nodeType":"ExpressionStatement","src":"3371:38:82"}]},"functionSelector":"ed24911d","id":13173,"implemented":true,"kind":"function","modifiers":[],"name":"getDomainSeparator","nodeType":"FunctionDefinition","overrides":{"id":13164,"nodeType":"OverrideSpecifier","overrides":[],"src":"3334:8:82"},"parameters":{"id":13163,"nodeType":"ParameterList","parameters":[],"src":"3319:2:82"},"returnParameters":{"id":13167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13166,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13173,"src":"3352:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13165,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3352:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3351:9:82"},"scope":13409,"src":"3292:124:82","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[2392],"body":{"id":13191,"nodeType":"Block","src":"3557:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3574:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13187,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3567:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3567:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13190,"nodeType":"ExpressionStatement","src":"3567:38:82"}]},"functionSelector":"288587ce","id":13192,"implemented":true,"kind":"function","modifiers":[],"name":"withdrawDynamicAmount","nodeType":"FunctionDefinition","overrides":{"id":13181,"nodeType":"OverrideSpecifier","overrides":[],"src":"3521:8:82"},"parameters":{"id":13180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13175,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13192,"src":"3462:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13174,"name":"address","nodeType":"ElementaryTypeName","src":"3462:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13177,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13192,"src":"3479:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13176,"name":"uint256","nodeType":"ElementaryTypeName","src":"3479:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13179,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13192,"src":"3496:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13178,"name":"bool","nodeType":"ElementaryTypeName","src":"3496:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3452:54:82"},"returnParameters":{"id":13186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13183,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13192,"src":"3539:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13182,"name":"uint256","nodeType":"ElementaryTypeName","src":"3539:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13185,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13192,"src":"3548:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13184,"name":"uint256","nodeType":"ElementaryTypeName","src":"3548:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3538:18:82"},"scope":13409,"src":"3422:190:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2430],"body":{"id":13216,"nodeType":"Block","src":"3818:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3835:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13212,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3828:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3828:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13215,"nodeType":"ExpressionStatement","src":"3828:38:82"}]},"functionSelector":"c485852b","id":13217,"implemented":true,"kind":"function","modifiers":[],"name":"metaDeposit","nodeType":"FunctionDefinition","overrides":{"id":13208,"nodeType":"OverrideSpecifier","overrides":[],"src":"3791:8:82"},"parameters":{"id":13207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13194,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13217,"src":"3648:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13193,"name":"address","nodeType":"ElementaryTypeName","src":"3648:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13196,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13217,"src":"3665:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13195,"name":"address","nodeType":"ElementaryTypeName","src":"3665:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13198,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13217,"src":"3682:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13197,"name":"uint256","nodeType":"ElementaryTypeName","src":"3682:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13200,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13217,"src":"3699:6:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":13199,"name":"uint16","nodeType":"ElementaryTypeName","src":"3699:6:82","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":13202,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13217,"src":"3715:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13201,"name":"bool","nodeType":"ElementaryTypeName","src":"3715:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":13204,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13217,"src":"3729:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13203,"name":"uint256","nodeType":"ElementaryTypeName","src":"3729:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13206,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13217,"src":"3746:24:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2350_calldata_ptr","typeString":"struct IStaticATokenLM.SignatureParams"},"typeName":{"id":13205,"name":"SignatureParams","nodeType":"UserDefinedTypeName","referencedDeclaration":2350,"src":"3746:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2350_storage_ptr","typeString":"struct IStaticATokenLM.SignatureParams"}},"visibility":"internal"}],"src":"3638:138:82"},"returnParameters":{"id":13211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13210,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13217,"src":"3809:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13209,"name":"uint256","nodeType":"ElementaryTypeName","src":"3809:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3808:9:82"},"scope":13409,"src":"3618:255:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2452],"body":{"id":13243,"nodeType":"Block","src":"4090:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4107:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13239,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4100:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4100:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13242,"nodeType":"ExpressionStatement","src":"4100:38:82"}]},"functionSelector":"60266557","id":13244,"implemented":true,"kind":"function","modifiers":[],"name":"metaWithdraw","nodeType":"FunctionDefinition","overrides":{"id":13233,"nodeType":"OverrideSpecifier","overrides":[],"src":"4054:8:82"},"parameters":{"id":13232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13219,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13244,"src":"3910:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13218,"name":"address","nodeType":"ElementaryTypeName","src":"3910:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13221,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13244,"src":"3927:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13220,"name":"address","nodeType":"ElementaryTypeName","src":"3927:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13223,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13244,"src":"3944:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13222,"name":"uint256","nodeType":"ElementaryTypeName","src":"3944:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13225,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13244,"src":"3961:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13224,"name":"uint256","nodeType":"ElementaryTypeName","src":"3961:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13227,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13244,"src":"3978:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13226,"name":"bool","nodeType":"ElementaryTypeName","src":"3978:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":13229,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13244,"src":"3992:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13228,"name":"uint256","nodeType":"ElementaryTypeName","src":"3992:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13231,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13244,"src":"4009:24:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2350_calldata_ptr","typeString":"struct IStaticATokenLM.SignatureParams"},"typeName":{"id":13230,"name":"SignatureParams","nodeType":"UserDefinedTypeName","referencedDeclaration":2350,"src":"4009:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2350_storage_ptr","typeString":"struct IStaticATokenLM.SignatureParams"}},"visibility":"internal"}],"src":"3900:139:82"},"returnParameters":{"id":13238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13235,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13244,"src":"4072:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13234,"name":"uint256","nodeType":"ElementaryTypeName","src":"4072:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13237,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13244,"src":"4081:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13236,"name":"uint256","nodeType":"ElementaryTypeName","src":"4081:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4071:18:82"},"scope":13409,"src":"3879:266:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2460],"body":{"id":13256,"nodeType":"Block","src":"4227:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4244:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13252,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4237:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4237:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13255,"nodeType":"ExpressionStatement","src":"4237:38:82"}]},"functionSelector":"44b68c3f","id":13257,"implemented":true,"kind":"function","modifiers":[],"name":"dynamicBalanceOf","nodeType":"FunctionDefinition","overrides":{"id":13248,"nodeType":"OverrideSpecifier","overrides":[],"src":"4200:8:82"},"parameters":{"id":13247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13246,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13257,"src":"4177:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13245,"name":"address","nodeType":"ElementaryTypeName","src":"4177:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4176:9:82"},"returnParameters":{"id":13251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13250,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13257,"src":"4218:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13249,"name":"uint256","nodeType":"ElementaryTypeName","src":"4218:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4217:9:82"},"scope":13409,"src":"4151:131:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2492],"body":{"id":13265,"nodeType":"Block","src":"4346:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4363:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13261,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4356:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4356:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13264,"nodeType":"ExpressionStatement","src":"4356:38:82"}]},"functionSelector":"3eb2eba6","id":13266,"implemented":true,"kind":"function","modifiers":[],"name":"collectAndUpdateRewards","nodeType":"FunctionDefinition","overrides":{"id":13259,"nodeType":"OverrideSpecifier","overrides":[],"src":"4337:8:82"},"parameters":{"id":13258,"nodeType":"ParameterList","parameters":[],"src":"4320:2:82"},"returnParameters":{"id":13260,"nodeType":"ParameterList","parameters":[],"src":"4346:0:82"},"scope":13409,"src":"4288:113:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2502],"body":{"id":13280,"nodeType":"Block","src":"4514:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4531:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13276,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4524:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4524:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13279,"nodeType":"ExpressionStatement","src":"4524:38:82"}]},"functionSelector":"dd05aa12","id":13281,"implemented":true,"kind":"function","modifiers":[],"name":"claimRewardsOnBehalf","nodeType":"FunctionDefinition","overrides":{"id":13274,"nodeType":"OverrideSpecifier","overrides":[],"src":"4505:8:82"},"parameters":{"id":13273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13268,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13281,"src":"4446:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13267,"name":"address","nodeType":"ElementaryTypeName","src":"4446:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13270,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13281,"src":"4463:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13269,"name":"address","nodeType":"ElementaryTypeName","src":"4463:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13272,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13281,"src":"4480:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13271,"name":"bool","nodeType":"ElementaryTypeName","src":"4480:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4436:54:82"},"returnParameters":{"id":13275,"nodeType":"ParameterList","parameters":[],"src":"4514:0:82"},"scope":13409,"src":"4407:162:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2510],"body":{"id":13293,"nodeType":"Block","src":"4635:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4652:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13289,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4645:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4645:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13292,"nodeType":"ExpressionStatement","src":"4645:38:82"}]},"functionSelector":"491c011a","id":13294,"implemented":true,"kind":"function","modifiers":[],"name":"claimRewards","nodeType":"FunctionDefinition","overrides":{"id":13287,"nodeType":"OverrideSpecifier","overrides":[],"src":"4626:8:82"},"parameters":{"id":13286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13283,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13294,"src":"4597:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13282,"name":"address","nodeType":"ElementaryTypeName","src":"4597:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13285,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13294,"src":"4606:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13284,"name":"bool","nodeType":"ElementaryTypeName","src":"4606:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4596:15:82"},"returnParameters":{"id":13288,"nodeType":"ParameterList","parameters":[],"src":"4635:0:82"},"scope":13409,"src":"4575:115:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2516],"body":{"id":13304,"nodeType":"Block","src":"4753:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4770:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13300,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4763:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4763:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13303,"nodeType":"ExpressionStatement","src":"4763:38:82"}]},"functionSelector":"45c1ace7","id":13305,"implemented":true,"kind":"function","modifiers":[],"name":"claimRewardsToSelf","nodeType":"FunctionDefinition","overrides":{"id":13298,"nodeType":"OverrideSpecifier","overrides":[],"src":"4744:8:82"},"parameters":{"id":13297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13296,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13305,"src":"4724:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13295,"name":"bool","nodeType":"ElementaryTypeName","src":"4724:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4723:6:82"},"returnParameters":{"id":13299,"nodeType":"ParameterList","parameters":[],"src":"4753:0:82"},"scope":13409,"src":"4696:112:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2522],"body":{"id":13315,"nodeType":"Block","src":"4891:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4908:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13311,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4901:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4901:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13314,"nodeType":"ExpressionStatement","src":"4901:38:82"}]},"functionSelector":"7f372cff","id":13316,"implemented":true,"kind":"function","modifiers":[],"name":"getTotalClaimableRewards","nodeType":"FunctionDefinition","overrides":{"id":13307,"nodeType":"OverrideSpecifier","overrides":[],"src":"4864:8:82"},"parameters":{"id":13306,"nodeType":"ParameterList","parameters":[],"src":"4847:2:82"},"returnParameters":{"id":13310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13309,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13316,"src":"4882:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13308,"name":"uint256","nodeType":"ElementaryTypeName","src":"4882:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4881:9:82"},"scope":13409,"src":"4814:132:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2530],"body":{"id":13328,"nodeType":"Block","src":"5031:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5048:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13324,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5041:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5041:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13327,"nodeType":"ExpressionStatement","src":"5041:38:82"}]},"functionSelector":"308e401e","id":13329,"implemented":true,"kind":"function","modifiers":[],"name":"getClaimableRewards","nodeType":"FunctionDefinition","overrides":{"id":13320,"nodeType":"OverrideSpecifier","overrides":[],"src":"5004:8:82"},"parameters":{"id":13319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13318,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13329,"src":"4981:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13317,"name":"address","nodeType":"ElementaryTypeName","src":"4981:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4980:9:82"},"returnParameters":{"id":13323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13322,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13329,"src":"5022:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13321,"name":"uint256","nodeType":"ElementaryTypeName","src":"5022:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5021:9:82"},"scope":13409,"src":"4952:134:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2538],"body":{"id":13341,"nodeType":"Block","src":"5171:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5188:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13337,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5181:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5181:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13340,"nodeType":"ExpressionStatement","src":"5181:38:82"}]},"functionSelector":"69a69e29","id":13342,"implemented":true,"kind":"function","modifiers":[],"name":"getUnclaimedRewards","nodeType":"FunctionDefinition","overrides":{"id":13333,"nodeType":"OverrideSpecifier","overrides":[],"src":"5144:8:82"},"parameters":{"id":13332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13331,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13342,"src":"5121:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13330,"name":"address","nodeType":"ElementaryTypeName","src":"5121:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5120:9:82"},"returnParameters":{"id":13336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13335,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13342,"src":"5162:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13334,"name":"uint256","nodeType":"ElementaryTypeName","src":"5162:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5161:9:82"},"scope":13409,"src":"5092:134:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2543],"body":{"id":13352,"nodeType":"Block","src":"5306:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5323:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13348,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5316:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5316:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13351,"nodeType":"ExpressionStatement","src":"5316:38:82"}]},"functionSelector":"a135a55e","id":13353,"implemented":true,"kind":"function","modifiers":[],"name":"getAccRewardsPerToken","nodeType":"FunctionDefinition","overrides":{"id":13344,"nodeType":"OverrideSpecifier","overrides":[],"src":"5279:8:82"},"parameters":{"id":13343,"nodeType":"ParameterList","parameters":[],"src":"5262:2:82"},"returnParameters":{"id":13347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13346,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13353,"src":"5297:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13345,"name":"uint256","nodeType":"ElementaryTypeName","src":"5297:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5296:9:82"},"scope":13409,"src":"5232:129:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2548],"body":{"id":13363,"nodeType":"Block","src":"5445:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5462:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13359,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5455:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5455:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13362,"nodeType":"ExpressionStatement","src":"5455:38:82"}]},"functionSelector":"31a5cfa4","id":13364,"implemented":true,"kind":"function","modifiers":[],"name":"getLifetimeRewardsClaimed","nodeType":"FunctionDefinition","overrides":{"id":13355,"nodeType":"OverrideSpecifier","overrides":[],"src":"5418:8:82"},"parameters":{"id":13354,"nodeType":"ParameterList","parameters":[],"src":"5401:2:82"},"returnParameters":{"id":13358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13357,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13364,"src":"5436:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13356,"name":"uint256","nodeType":"ElementaryTypeName","src":"5436:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5435:9:82"},"scope":13409,"src":"5367:133:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2553],"body":{"id":13374,"nodeType":"Block","src":"5577:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5594:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13370,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5587:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5587:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13373,"nodeType":"ExpressionStatement","src":"5587:38:82"}]},"functionSelector":"b3a59022","id":13375,"implemented":true,"kind":"function","modifiers":[],"name":"getLifetimeRewards","nodeType":"FunctionDefinition","overrides":{"id":13366,"nodeType":"OverrideSpecifier","overrides":[],"src":"5550:8:82"},"parameters":{"id":13365,"nodeType":"ParameterList","parameters":[],"src":"5533:2:82"},"returnParameters":{"id":13369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13368,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13375,"src":"5568:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13367,"name":"uint256","nodeType":"ElementaryTypeName","src":"5568:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5567:9:82"},"scope":13409,"src":"5506:126:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2558],"body":{"id":13385,"nodeType":"Block","src":"5709:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5726:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13381,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5719:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5719:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13384,"nodeType":"ExpressionStatement","src":"5719:38:82"}]},"functionSelector":"bf62bee6","id":13386,"implemented":true,"kind":"function","modifiers":[],"name":"getLastRewardBlock","nodeType":"FunctionDefinition","overrides":{"id":13377,"nodeType":"OverrideSpecifier","overrides":[],"src":"5682:8:82"},"parameters":{"id":13376,"nodeType":"ParameterList","parameters":[],"src":"5665:2:82"},"returnParameters":{"id":13380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13379,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13386,"src":"5700:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13378,"name":"uint256","nodeType":"ElementaryTypeName","src":"5700:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5699:9:82"},"scope":13409,"src":"5638:126:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2568],"body":{"id":13396,"nodeType":"Block","src":"5844:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5861:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13392,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5854:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5854:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13395,"nodeType":"ExpressionStatement","src":"5854:38:82"}]},"functionSelector":"10d0ab22","id":13397,"implemented":true,"kind":"function","modifiers":[],"name":"INCENTIVES_CONTROLLER","nodeType":"FunctionDefinition","overrides":{"id":13388,"nodeType":"OverrideSpecifier","overrides":[],"src":"5817:8:82"},"parameters":{"id":13387,"nodeType":"ParameterList","parameters":[],"src":"5800:2:82"},"returnParameters":{"id":13391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13390,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13397,"src":"5835:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13389,"name":"address","nodeType":"ElementaryTypeName","src":"5835:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5834:9:82"},"scope":13409,"src":"5770:129:82","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2583],"body":{"id":13407,"nodeType":"Block","src":"5969:55:82","statements":[{"expression":{"arguments":[{"hexValue":"4d6f636b206d6574686f643b206e6f7420696d706c656d656e746564","id":13404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5986:30:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""},"value":"Mock method; not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7851b00ffbf0009f769b0eaa7cc666f6cf1dfdd593cc46ff902a90f1c10f19bd","typeString":"literal_string \"Mock method; not implemented\""}],"id":13403,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5979:6:82","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":13405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5979:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13406,"nodeType":"ExpressionStatement","src":"5979:38:82"}]},"functionSelector":"99248ea7","id":13408,"implemented":true,"kind":"function","modifiers":[],"name":"REWARD_TOKEN","nodeType":"FunctionDefinition","overrides":{"id":13399,"nodeType":"OverrideSpecifier","overrides":[],"src":"5943:8:82"},"parameters":{"id":13398,"nodeType":"ParameterList","parameters":[],"src":"5926:2:82"},"returnParameters":{"id":13402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13401,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13408,"src":"5961:6:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"},"typeName":{"id":13400,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":1964,"src":"5961:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1964","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"5960:8:82"},"scope":13409,"src":"5905:119:82","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":13410,"src":"907:5119:82"}],"src":"688:5339:82"},"id":82},"contracts/test/MockWstETH.sol":{"ast":{"absolutePath":"contracts/test/MockWstETH.sol","exportedSymbols":{"MockWstETH":[13584]},"id":13585,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13411,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"731:23:83"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","id":13412,"nodeType":"ImportDirective","scope":13585,"sourceUnit":2598,"src":"756:76:83","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol","id":13413,"nodeType":"ImportDirective","scope":13585,"sourceUnit":2655,"src":"833:77:83","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":13414,"nodeType":"ImportDirective","scope":13585,"sourceUnit":4561,"src":"912:72:83","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","id":13415,"nodeType":"ImportDirective","scope":13585,"sourceUnit":6920,"src":"985:75:83","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13416,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":6919,"src":"1085:5:83","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$6919","typeString":"contract ERC20"}},"id":13417,"nodeType":"InheritanceSpecifier","src":"1085:5:83"},{"baseName":{"id":13418,"name":"IwstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2654,"src":"1092:7:83","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2654","typeString":"contract IwstETH"}},"id":13419,"nodeType":"InheritanceSpecifier","src":"1092:7:83"}],"contractDependencies":[1964,2654,6919],"contractKind":"contract","fullyImplemented":true,"id":13584,"linearizedBaseContracts":[13584,2654,6919,1964],"name":"MockWstETH","nodeType":"ContractDefinition","nodes":[{"id":13422,"libraryName":{"id":13420,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":4560,"src":"1112:10:83","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$4560","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"1106:29:83","typeName":{"id":13421,"name":"uint256","nodeType":"ElementaryTypeName","src":"1127:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"baseFunctions":[2609],"constant":false,"functionSelector":"c1fe3e48","id":13425,"mutability":"mutable","name":"stETH","nodeType":"VariableDeclaration","overrides":{"id":13424,"nodeType":"OverrideSpecifier","overrides":[],"src":"1155:8:83"},"scope":13584,"src":"1141:28:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"},"typeName":{"id":13423,"name":"IstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2597,"src":"1141:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"visibility":"public"},{"constant":false,"functionSelector":"2c4e722e","id":13428,"mutability":"mutable","name":"rate","nodeType":"VariableDeclaration","scope":13584,"src":"1175:28:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13426,"name":"uint256","nodeType":"ElementaryTypeName","src":"1175:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"312e35653138","id":13427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1197:6:83","typeDescriptions":{"typeIdentifier":"t_rational_1500000000000000000_by_1","typeString":"int_const 1500000000000000000"},"value":"1.5e18"},"visibility":"public"},{"body":{"id":13441,"nodeType":"Block","src":"1276:30:83","statements":[{"expression":{"id":13439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13437,"name":"stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13425,"src":"1286:5:83","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13438,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13430,"src":"1294:5:83","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"src":"1286:13:83","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"id":13440,"nodeType":"ExpressionStatement","src":"1286:13:83"}]},"id":13442,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"57726170706564205374616b6564204574686572","id":13433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1242:22:83","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4aaeeeba3941f74fbcdbbdf601cdfb58af6ecb0e16fb03b053f640b73c8e1b0","typeString":"literal_string \"Wrapped Staked Ether\""},"value":"Wrapped Staked Ether"},{"hexValue":"777374455448","id":13434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1266:8:83","typeDescriptions":{"typeIdentifier":"t_stringliteral_707722560bdff9b9a74d8e6546a03701e75a3e3fd30c3f0f5184fecdbd366335","typeString":"literal_string \"wstETH\""},"value":"wstETH"}],"id":13435,"modifierName":{"id":13432,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6919,"src":"1236:5:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$6919_$","typeString":"type(contract ERC20)"}},"nodeType":"ModifierInvocation","src":"1236:39:83"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":13431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13430,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":13442,"src":"1222:12:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"},"typeName":{"id":13429,"name":"IstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2597,"src":"1222:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"visibility":"internal"}],"src":"1221:14:83"},"returnParameters":{"id":13436,"nodeType":"ParameterList","parameters":[],"src":"1276:0:83"},"scope":13584,"src":"1210:96:83","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2617],"body":{"id":13476,"nodeType":"Block","src":"1384:209:83","statements":[{"expression":{"arguments":[{"expression":{"id":13453,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1413:3:83","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1413:10:83","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":13457,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1433:4:83","typeDescriptions":{"typeIdentifier":"t_contract$_MockWstETH_$13584","typeString":"contract MockWstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockWstETH_$13584","typeString":"contract MockWstETH"}],"id":13456,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1425:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13455,"name":"address","nodeType":"ElementaryTypeName","src":"1425:7:83","typeDescriptions":{}}},"id":13458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1425:13:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":13459,"name":"_stETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13444,"src":"1440:12:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13450,"name":"stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13425,"src":"1394:5:83","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"id":13452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":1945,"src":"1394:18:83","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":13460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1394:59:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13461,"nodeType":"ExpressionStatement","src":"1394:59:83"},{"assignments":[13463],"declarations":[{"constant":false,"id":13463,"mutability":"mutable","name":"wstETHAmount","nodeType":"VariableDeclaration","scope":13476,"src":"1463:20:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13462,"name":"uint256","nodeType":"ElementaryTypeName","src":"1463:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13467,"initialValue":{"arguments":[{"id":13465,"name":"_stETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13444,"src":"1503:12:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13464,"name":"getWstETHByStETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13547,"src":"1486:16:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":13466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1486:30:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1463:53:83"},{"expression":{"arguments":[{"expression":{"id":13469,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1532:3:83","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1532:10:83","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":13471,"name":"wstETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13463,"src":"1544:12:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13468,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6812,"src":"1526:5:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":13472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1526:31:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13473,"nodeType":"ExpressionStatement","src":"1526:31:83"},{"expression":{"id":13474,"name":"wstETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13463,"src":"1574:12:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13449,"id":13475,"nodeType":"Return","src":"1567:19:83"}]},"functionSelector":"ea598cb0","id":13477,"implemented":true,"kind":"function","modifiers":[],"name":"wrap","nodeType":"FunctionDefinition","overrides":{"id":13446,"nodeType":"OverrideSpecifier","overrides":[],"src":"1357:8:83"},"parameters":{"id":13445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13444,"mutability":"mutable","name":"_stETHAmount","nodeType":"VariableDeclaration","scope":13477,"src":"1326:20:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13443,"name":"uint256","nodeType":"ElementaryTypeName","src":"1326:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1325:22:83"},"returnParameters":{"id":13449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13448,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13477,"src":"1375:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13447,"name":"uint256","nodeType":"ElementaryTypeName","src":"1375:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1374:9:83"},"scope":13584,"src":"1312:281:83","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2625],"body":{"id":13507,"nodeType":"Block","src":"1674:189:83","statements":[{"expression":{"arguments":[{"expression":{"id":13486,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1690:3:83","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1690:10:83","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":13488,"name":"_wstETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13479,"src":"1702:13:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13485,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"1684:5:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":13489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1684:32:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13490,"nodeType":"ExpressionStatement","src":"1684:32:83"},{"assignments":[13492],"declarations":[{"constant":false,"id":13492,"mutability":"mutable","name":"stETHAmount","nodeType":"VariableDeclaration","scope":13507,"src":"1726:19:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13491,"name":"uint256","nodeType":"ElementaryTypeName","src":"1726:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13496,"initialValue":{"arguments":[{"id":13494,"name":"_wstETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13479,"src":"1765:13:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13493,"name":"getStETHByWstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13561,"src":"1748:16:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":13495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1748:31:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1726:53:83"},{"expression":{"arguments":[{"expression":{"id":13500,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1804:3:83","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1804:10:83","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":13502,"name":"stETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13492,"src":"1816:11:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13497,"name":"stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13425,"src":"1789:5:83","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"id":13499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":1913,"src":"1789:14:83","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":13503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1789:39:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13504,"nodeType":"ExpressionStatement","src":"1789:39:83"},{"expression":{"id":13505,"name":"stETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13492,"src":"1845:11:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13484,"id":13506,"nodeType":"Return","src":"1838:18:83"}]},"functionSelector":"de0e9a3e","id":13508,"implemented":true,"kind":"function","modifiers":[],"name":"unwrap","nodeType":"FunctionDefinition","overrides":{"id":13481,"nodeType":"OverrideSpecifier","overrides":[],"src":"1647:8:83"},"parameters":{"id":13480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13479,"mutability":"mutable","name":"_wstETHAmount","nodeType":"VariableDeclaration","scope":13508,"src":"1615:21:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13478,"name":"uint256","nodeType":"ElementaryTypeName","src":"1615:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1614:23:83"},"returnParameters":{"id":13484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13483,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13508,"src":"1665:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13482,"name":"uint256","nodeType":"ElementaryTypeName","src":"1665:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1664:9:83"},"scope":13584,"src":"1599:264:83","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":13532,"nodeType":"Block","src":"1896:120:83","statements":[{"expression":{"arguments":[{"arguments":[{"id":13519,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1947:4:83","typeDescriptions":{"typeIdentifier":"t_contract$_MockWstETH_$13584","typeString":"contract MockWstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockWstETH_$13584","typeString":"contract MockWstETH"}],"id":13518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1939:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13517,"name":"address","nodeType":"ElementaryTypeName","src":"1939:7:83","typeDescriptions":{}}},"id":13520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1939:13:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":13511,"name":"stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13425,"src":"1906:5:83","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2597","typeString":"contract IstETH"}},"id":13513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"submit","nodeType":"MemberAccess","referencedDeclaration":2596,"src":"1906:12:83","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$_t_uint256_$","typeString":"function (address) payable external returns (uint256)"}},"id":13516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":13514,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1927:3:83","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1927:9:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1906:32:83","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$_t_uint256_$value","typeString":"function (address) payable external returns (uint256)"}},"id":13521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1906:47:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13522,"nodeType":"ExpressionStatement","src":"1906:47:83"},{"expression":{"arguments":[{"expression":{"id":13524,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1969:3:83","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1969:10:83","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"expression":{"id":13527,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1998:3:83","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1998:9:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13526,"name":"getWstETHByStETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13547,"src":"1981:16:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":13529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1981:27:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13523,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6812,"src":"1963:5:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":13530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1963:46:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13531,"nodeType":"ExpressionStatement","src":"1963:46:83"}]},"id":13533,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":13509,"nodeType":"ParameterList","parameters":[],"src":"1876:2:83"},"returnParameters":{"id":13510,"nodeType":"ParameterList","parameters":[],"src":"1896:0:83"},"scope":13584,"src":"1869:147:83","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[2633],"body":{"id":13546,"nodeType":"Block","src":"2109:50:83","statements":[{"expression":{"arguments":[{"id":13543,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13428,"src":"2147:4:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13541,"name":"_stETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13535,"src":"2126:12:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":4341,"src":"2126:20:83","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2126:26:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13540,"id":13545,"nodeType":"Return","src":"2119:33:83"}]},"functionSelector":"b0e38900","id":13547,"implemented":true,"kind":"function","modifiers":[],"name":"getWstETHByStETH","nodeType":"FunctionDefinition","overrides":{"id":13537,"nodeType":"OverrideSpecifier","overrides":[],"src":"2082:8:83"},"parameters":{"id":13536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13535,"mutability":"mutable","name":"_stETHAmount","nodeType":"VariableDeclaration","scope":13547,"src":"2048:20:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13534,"name":"uint256","nodeType":"ElementaryTypeName","src":"2048:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2047:22:83"},"returnParameters":{"id":13540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13539,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13547,"src":"2100:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13538,"name":"uint256","nodeType":"ElementaryTypeName","src":"2100:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2099:9:83"},"scope":13584,"src":"2022:137:83","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2641],"body":{"id":13560,"nodeType":"Block","src":"2253:51:83","statements":[{"expression":{"arguments":[{"id":13557,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13428,"src":"2292:4:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13555,"name":"_wstETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13549,"src":"2270:13:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":4247,"src":"2270:21:83","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2270:27:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13554,"id":13559,"nodeType":"Return","src":"2263:34:83"}]},"functionSelector":"bb2952fc","id":13561,"implemented":true,"kind":"function","modifiers":[],"name":"getStETHByWstETH","nodeType":"FunctionDefinition","overrides":{"id":13551,"nodeType":"OverrideSpecifier","overrides":[],"src":"2226:8:83"},"parameters":{"id":13550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13549,"mutability":"mutable","name":"_wstETHAmount","nodeType":"VariableDeclaration","scope":13561,"src":"2191:21:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13548,"name":"uint256","nodeType":"ElementaryTypeName","src":"2191:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2190:23:83"},"returnParameters":{"id":13554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13553,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13561,"src":"2244:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13552,"name":"uint256","nodeType":"ElementaryTypeName","src":"2244:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2243:9:83"},"scope":13584,"src":"2165:139:83","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2647],"body":{"id":13571,"nodeType":"Block","src":"2376:49:83","statements":[{"expression":{"arguments":[{"hexValue":"31","id":13568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2410:7:83","subdenomination":"ether","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"id":13567,"name":"getStETHByWstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13561,"src":"2393:16:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":13569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2393:25:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13566,"id":13570,"nodeType":"Return","src":"2386:32:83"}]},"functionSelector":"035faf82","id":13572,"implemented":true,"kind":"function","modifiers":[],"name":"stEthPerToken","nodeType":"FunctionDefinition","overrides":{"id":13563,"nodeType":"OverrideSpecifier","overrides":[],"src":"2349:8:83"},"parameters":{"id":13562,"nodeType":"ParameterList","parameters":[],"src":"2332:2:83"},"returnParameters":{"id":13566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13565,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13572,"src":"2367:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13564,"name":"uint256","nodeType":"ElementaryTypeName","src":"2367:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2366:9:83"},"scope":13584,"src":"2310:115:83","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2653],"body":{"id":13582,"nodeType":"Block","src":"2498:49:83","statements":[{"expression":{"arguments":[{"hexValue":"31","id":13579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2532:7:83","subdenomination":"ether","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"id":13578,"name":"getWstETHByStETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13547,"src":"2515:16:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":13580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2515:25:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13577,"id":13581,"nodeType":"Return","src":"2508:32:83"}]},"functionSelector":"9576a0c8","id":13583,"implemented":true,"kind":"function","modifiers":[],"name":"tokensPerStEth","nodeType":"FunctionDefinition","overrides":{"id":13574,"nodeType":"OverrideSpecifier","overrides":[],"src":"2471:8:83"},"parameters":{"id":13573,"nodeType":"ParameterList","parameters":[],"src":"2454:2:83"},"returnParameters":{"id":13577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13576,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13583,"src":"2489:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13575,"name":"uint256","nodeType":"ElementaryTypeName","src":"2489:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2488:9:83"},"scope":13584,"src":"2431:116:83","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":13585,"src":"1062:1487:83"}],"src":"731:1819:83"},"id":83},"contracts/test/TestWETH.sol":{"ast":{"absolutePath":"contracts/test/TestWETH.sol","exportedSymbols":{"TestWETH":[13849]},"id":13850,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13586,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"731:23:84"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","id":13587,"nodeType":"ImportDirective","scope":13850,"sourceUnit":1887,"src":"756:78:84","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13588,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":1886,"src":"857:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$1886","typeString":"contract IWETH"}},"id":13589,"nodeType":"InheritanceSpecifier","src":"857:5:84"}],"contractDependencies":[1886,1964],"contractKind":"contract","fullyImplemented":true,"id":13849,"linearizedBaseContracts":[13849,1886,1964],"name":"TestWETH","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"06fdde03","id":13592,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":13849,"src":"869:36:84","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":13590,"name":"string","nodeType":"ElementaryTypeName","src":"869:6:84","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"57726170706564204574686572","id":13591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"890:15:84","typeDescriptions":{"typeIdentifier":"t_stringliteral_00cd3d46df44f2cbb950cf84eb2e92aa2ddd23195b1a009173ea59a063357ed3","typeString":"literal_string \"Wrapped Ether\""},"value":"Wrapped Ether"},"visibility":"public"},{"constant":false,"functionSelector":"95d89b41","id":13595,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":13849,"src":"911:29:84","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":13593,"name":"string","nodeType":"ElementaryTypeName","src":"911:6:84","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"57455448","id":13594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"934:6:84","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f8a193ff464434486c0daf7db2a895884365d2bc84ba47a68fcf89c1b14b5b8","typeString":"literal_string \"WETH\""},"value":"WETH"},"visibility":"public"},{"constant":false,"functionSelector":"313ce567","id":13598,"mutability":"mutable","name":"decimals","nodeType":"VariableDeclaration","scope":13849,"src":"946:26:84","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":13596,"name":"uint8","nodeType":"ElementaryTypeName","src":"946:5:84","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3138","id":13597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"970:2:84","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"visibility":"public"},{"anonymous":false,"id":13604,"name":"Deposit","nodeType":"EventDefinition","parameters":{"id":13603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13600,"indexed":true,"mutability":"mutable","name":"dst","nodeType":"VariableDeclaration","scope":13604,"src":"993:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13599,"name":"address","nodeType":"ElementaryTypeName","src":"993:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13602,"indexed":false,"mutability":"mutable","name":"wad","nodeType":"VariableDeclaration","scope":13604,"src":"1014:11:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13601,"name":"uint256","nodeType":"ElementaryTypeName","src":"1014:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"992:34:84"},"src":"979:48:84"},{"anonymous":false,"id":13610,"name":"Withdrawal","nodeType":"EventDefinition","parameters":{"id":13609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13606,"indexed":true,"mutability":"mutable","name":"src","nodeType":"VariableDeclaration","scope":13610,"src":"1049:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13605,"name":"address","nodeType":"ElementaryTypeName","src":"1049:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13608,"indexed":false,"mutability":"mutable","name":"wad","nodeType":"VariableDeclaration","scope":13610,"src":"1070:11:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13607,"name":"uint256","nodeType":"ElementaryTypeName","src":"1070:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1048:34:84"},"src":"1032:51:84"},{"baseFunctions":[1903],"constant":false,"functionSelector":"70a08231","id":13615,"mutability":"mutable","name":"balanceOf","nodeType":"VariableDeclaration","overrides":{"id":13614,"nodeType":"OverrideSpecifier","overrides":[],"src":"1124:8:84"},"scope":13849,"src":"1089:53:84","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":13613,"keyType":{"id":13611,"name":"address","nodeType":"ElementaryTypeName","src":"1097:7:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1089:27:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":13612,"name":"uint256","nodeType":"ElementaryTypeName","src":"1108:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"baseFunctions":[1923],"constant":false,"functionSelector":"dd62ed3e","id":13622,"mutability":"mutable","name":"allowance","nodeType":"VariableDeclaration","overrides":{"id":13621,"nodeType":"OverrideSpecifier","overrides":[],"src":"1203:8:84"},"scope":13849,"src":"1148:73:84","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":13620,"keyType":{"id":13616,"name":"address","nodeType":"ElementaryTypeName","src":"1156:7:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1148:47:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":13619,"keyType":{"id":13617,"name":"address","nodeType":"ElementaryTypeName","src":"1175:7:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1167:27:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":13618,"name":"uint256","nodeType":"ElementaryTypeName","src":"1186:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"body":{"id":13628,"nodeType":"Block","src":"1255:26:84","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13625,"name":"deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13649,"src":"1265:7:84","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":13626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1265:9:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13627,"nodeType":"ExpressionStatement","src":"1265:9:84"}]},"id":13629,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":13623,"nodeType":"ParameterList","parameters":[],"src":"1235:2:84"},"returnParameters":{"id":13624,"nodeType":"ParameterList","parameters":[],"src":"1255:0:84"},"scope":13849,"src":"1228:53:84","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1880],"body":{"id":13648,"nodeType":"Block","src":"1330:96:84","statements":[{"expression":{"id":13639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13633,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13615,"src":"1340:9:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13636,"indexExpression":{"expression":{"id":13634,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1350:3:84","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1350:10:84","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1340:21:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":13637,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1365:3:84","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1365:9:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1340:34:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13640,"nodeType":"ExpressionStatement","src":"1340:34:84"},{"eventCall":{"arguments":[{"expression":{"id":13642,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1397:3:84","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1397:10:84","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":13644,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1409:3:84","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1409:9:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13641,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13604,"src":"1389:7:84","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":13646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1389:30:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13647,"nodeType":"EmitStatement","src":"1384:35:84"}]},"functionSelector":"d0e30db0","id":13649,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","overrides":{"id":13631,"nodeType":"OverrideSpecifier","overrides":[],"src":"1321:8:84"},"parameters":{"id":13630,"nodeType":"ParameterList","parameters":[],"src":"1303:2:84"},"returnParameters":{"id":13632,"nodeType":"ParameterList","parameters":[],"src":"1330:0:84"},"scope":13849,"src":"1287:139:84","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[1885],"body":{"id":13686,"nodeType":"Block","src":"1479:192:84","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":13656,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13615,"src":"1497:9:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13659,"indexExpression":{"expression":{"id":13657,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1507:3:84","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1507:10:84","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1497:21:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":13660,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13651,"src":"1522:3:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1497:28:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e53554646494349454e545f42414c414e4345","id":13662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1527:22:84","typeDescriptions":{"typeIdentifier":"t_stringliteral_153c6a82d06260899a3190a7f053b8e53b5844ee1a57108f9b35d4e78ccddb58","typeString":"literal_string \"INSUFFICIENT_BALANCE\""},"value":"INSUFFICIENT_BALANCE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_153c6a82d06260899a3190a7f053b8e53b5844ee1a57108f9b35d4e78ccddb58","typeString":"literal_string \"INSUFFICIENT_BALANCE\""}],"id":13655,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1489:7:84","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1489:61:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13664,"nodeType":"ExpressionStatement","src":"1489:61:84"},{"expression":{"id":13670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13665,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13615,"src":"1560:9:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13668,"indexExpression":{"expression":{"id":13666,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1570:3:84","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1570:10:84","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1560:21:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":13669,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13651,"src":"1585:3:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1560:28:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13671,"nodeType":"ExpressionStatement","src":"1560:28:84"},{"expression":{"arguments":[{"id":13677,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13651,"src":"1618:3:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":13672,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1598:3:84","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1598:10:84","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":13676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","src":"1598:19:84","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":13678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1598:24:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13679,"nodeType":"ExpressionStatement","src":"1598:24:84"},{"eventCall":{"arguments":[{"expression":{"id":13681,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1648:3:84","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1648:10:84","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":13683,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13651,"src":"1660:3:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13680,"name":"Withdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13610,"src":"1637:10:84","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":13684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1637:27:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13685,"nodeType":"EmitStatement","src":"1632:32:84"}]},"functionSelector":"2e1a7d4d","id":13687,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","overrides":{"id":13653,"nodeType":"OverrideSpecifier","overrides":[],"src":"1470:8:84"},"parameters":{"id":13652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13651,"mutability":"mutable","name":"wad","nodeType":"VariableDeclaration","scope":13687,"src":"1450:11:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13650,"name":"uint256","nodeType":"ElementaryTypeName","src":"1450:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1449:13:84"},"returnParameters":{"id":13654,"nodeType":"ParameterList","parameters":[],"src":"1479:0:84"},"scope":13849,"src":"1432:239:84","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":13705,"nodeType":"Block","src":"1832:92:84","statements":[{"expression":{"id":13698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13694,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13615,"src":"1842:9:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13696,"indexExpression":{"id":13695,"name":"destinatary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13689,"src":"1852:11:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1842:22:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":13697,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13691,"src":"1868:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1842:32:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13699,"nodeType":"ExpressionStatement","src":"1842:32:84"},{"eventCall":{"arguments":[{"id":13701,"name":"destinatary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13689,"src":"1897:11:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13702,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13691,"src":"1910:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13700,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13604,"src":"1889:7:84","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":13703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1889:28:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13704,"nodeType":"EmitStatement","src":"1884:33:84"}]},"functionSelector":"40c10f19","id":13706,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":13692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13689,"mutability":"mutable","name":"destinatary","nodeType":"VariableDeclaration","scope":13706,"src":"1786:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13688,"name":"address","nodeType":"ElementaryTypeName","src":"1786:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13691,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":13706,"src":"1807:14:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13690,"name":"uint256","nodeType":"ElementaryTypeName","src":"1807:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1785:37:84"},"returnParameters":{"id":13693,"nodeType":"ParameterList","parameters":[],"src":"1832:0:84"},"scope":13849,"src":"1772:152:84","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1895],"body":{"id":13718,"nodeType":"Block","src":"1992:45:84","statements":[{"expression":{"expression":{"arguments":[{"id":13714,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2017:4:84","typeDescriptions":{"typeIdentifier":"t_contract$_TestWETH_$13849","typeString":"contract TestWETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TestWETH_$13849","typeString":"contract TestWETH"}],"id":13713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2009:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13712,"name":"address","nodeType":"ElementaryTypeName","src":"2009:7:84","typeDescriptions":{}}},"id":13715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2009:13:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":13716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2009:21:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13711,"id":13717,"nodeType":"Return","src":"2002:28:84"}]},"functionSelector":"18160ddd","id":13719,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":{"id":13708,"nodeType":"OverrideSpecifier","overrides":[],"src":"1965:8:84"},"parameters":{"id":13707,"nodeType":"ParameterList","parameters":[],"src":"1950:2:84"},"returnParameters":{"id":13711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13710,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13719,"src":"1983:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13709,"name":"uint256","nodeType":"ElementaryTypeName","src":"1983:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1982:9:84"},"scope":13849,"src":"1930:107:84","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1933],"body":{"id":13747,"nodeType":"Block","src":"2117:115:84","statements":[{"expression":{"id":13736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":13729,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13622,"src":"2127:9:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":13733,"indexExpression":{"expression":{"id":13730,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2137:3:84","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2137:10:84","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2127:21:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13734,"indexExpression":{"id":13732,"name":"guy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13721,"src":"2149:3:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2127:26:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13735,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13723,"src":"2156:3:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2127:32:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13737,"nodeType":"ExpressionStatement","src":"2127:32:84"},{"eventCall":{"arguments":[{"expression":{"id":13739,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2183:3:84","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2183:10:84","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":13741,"name":"guy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13721,"src":"2195:3:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13742,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13723,"src":"2200:3:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13738,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"2174:8:84","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":13743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2174:30:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13744,"nodeType":"EmitStatement","src":"2169:35:84"},{"expression":{"hexValue":"74727565","id":13745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2221:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":13728,"id":13746,"nodeType":"Return","src":"2214:11:84"}]},"functionSelector":"095ea7b3","id":13748,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":{"id":13725,"nodeType":"OverrideSpecifier","overrides":[],"src":"2093:8:84"},"parameters":{"id":13724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13721,"mutability":"mutable","name":"guy","nodeType":"VariableDeclaration","scope":13748,"src":"2060:11:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13720,"name":"address","nodeType":"ElementaryTypeName","src":"2060:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13723,"mutability":"mutable","name":"wad","nodeType":"VariableDeclaration","scope":13748,"src":"2073:11:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13722,"name":"uint256","nodeType":"ElementaryTypeName","src":"2073:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2059:26:84"},"returnParameters":{"id":13728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13727,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13748,"src":"2111:4:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13726,"name":"bool","nodeType":"ElementaryTypeName","src":"2111:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2110:6:84"},"scope":13849,"src":"2043:189:84","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1913],"body":{"id":13765,"nodeType":"Block","src":"2313:58:84","statements":[{"expression":{"arguments":[{"expression":{"id":13759,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2343:3:84","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2343:10:84","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":13761,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13750,"src":"2355:3:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13762,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13752,"src":"2360:3:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13758,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"2330:12:84","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) returns (bool)"}},"id":13763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2330:34:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13757,"id":13764,"nodeType":"Return","src":"2323:41:84"}]},"functionSelector":"a9059cbb","id":13766,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","overrides":{"id":13754,"nodeType":"OverrideSpecifier","overrides":[],"src":"2289:8:84"},"parameters":{"id":13753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13750,"mutability":"mutable","name":"dst","nodeType":"VariableDeclaration","scope":13766,"src":"2256:11:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13749,"name":"address","nodeType":"ElementaryTypeName","src":"2256:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13752,"mutability":"mutable","name":"wad","nodeType":"VariableDeclaration","scope":13766,"src":"2269:11:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13751,"name":"uint256","nodeType":"ElementaryTypeName","src":"2269:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2255:26:84"},"returnParameters":{"id":13757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13756,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13766,"src":"2307:4:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13755,"name":"bool","nodeType":"ElementaryTypeName","src":"2307:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2306:6:84"},"scope":13849,"src":"2238:133:84","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1945],"body":{"id":13847,"nodeType":"Block","src":"2499:413:84","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":13779,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13615,"src":"2517:9:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13781,"indexExpression":{"id":13780,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13768,"src":"2527:3:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2517:14:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":13782,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13772,"src":"2535:3:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2517:21:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e53554646494349454e545f42414c414e4345","id":13784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2540:22:84","typeDescriptions":{"typeIdentifier":"t_stringliteral_153c6a82d06260899a3190a7f053b8e53b5844ee1a57108f9b35d4e78ccddb58","typeString":"literal_string \"INSUFFICIENT_BALANCE\""},"value":"INSUFFICIENT_BALANCE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_153c6a82d06260899a3190a7f053b8e53b5844ee1a57108f9b35d4e78ccddb58","typeString":"literal_string \"INSUFFICIENT_BALANCE\""}],"id":13778,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2509:7:84","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2509:54:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13786,"nodeType":"ExpressionStatement","src":"2509:54:84"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13787,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13768,"src":"2578:3:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":13788,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2585:3:84","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2585:10:84","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2578:17:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":13791,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13622,"src":"2599:9:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":13793,"indexExpression":{"id":13792,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13768,"src":"2609:3:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2599:14:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13796,"indexExpression":{"expression":{"id":13794,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2614:3:84","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2614:10:84","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2599:26:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":13800,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2637:2:84","subExpression":{"hexValue":"31","id":13799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2638:1:84","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":13798,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2629:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13797,"name":"uint256","nodeType":"ElementaryTypeName","src":"2629:7:84","typeDescriptions":{}}},"id":13801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2629:11:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2599:41:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2578:62:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13826,"nodeType":"IfStatement","src":"2574:208:84","trueBody":{"id":13825,"nodeType":"Block","src":"2642:140:84","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":13805,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13622,"src":"2664:9:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":13807,"indexExpression":{"id":13806,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13768,"src":"2674:3:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2664:14:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13810,"indexExpression":{"expression":{"id":13808,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2679:3:84","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2679:10:84","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2664:26:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":13811,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13772,"src":"2694:3:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2664:33:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e53554646494349454e545f414c4c4f57414e4345","id":13813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2699:24:84","typeDescriptions":{"typeIdentifier":"t_stringliteral_766e240ea71a1fa1f50bcdafcabfc952771c7bce143ed2fb6cc99408373684b8","typeString":"literal_string \"INSUFFICIENT_ALLOWANCE\""},"value":"INSUFFICIENT_ALLOWANCE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_766e240ea71a1fa1f50bcdafcabfc952771c7bce143ed2fb6cc99408373684b8","typeString":"literal_string \"INSUFFICIENT_ALLOWANCE\""}],"id":13804,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2656:7:84","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2656:68:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13815,"nodeType":"ExpressionStatement","src":"2656:68:84"},{"expression":{"id":13823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":13816,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13622,"src":"2738:9:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":13820,"indexExpression":{"id":13817,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13768,"src":"2748:3:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2738:14:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13821,"indexExpression":{"expression":{"id":13818,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2753:3:84","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2753:10:84","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2738:26:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":13822,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13772,"src":"2768:3:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2738:33:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13824,"nodeType":"ExpressionStatement","src":"2738:33:84"}]}},{"expression":{"id":13831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13827,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13615,"src":"2792:9:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13829,"indexExpression":{"id":13828,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13768,"src":"2802:3:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2792:14:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":13830,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13772,"src":"2810:3:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2792:21:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13832,"nodeType":"ExpressionStatement","src":"2792:21:84"},{"expression":{"id":13837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13833,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13615,"src":"2823:9:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13835,"indexExpression":{"id":13834,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13770,"src":"2833:3:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2823:14:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":13836,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13772,"src":"2841:3:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2823:21:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13838,"nodeType":"ExpressionStatement","src":"2823:21:84"},{"eventCall":{"arguments":[{"id":13840,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13768,"src":"2869:3:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13841,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13770,"src":"2874:3:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13842,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13772,"src":"2879:3:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13839,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"2860:8:84","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":13843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2860:23:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13844,"nodeType":"EmitStatement","src":"2855:28:84"},{"expression":{"hexValue":"74727565","id":13845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2901:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":13777,"id":13846,"nodeType":"Return","src":"2894:11:84"}]},"functionSelector":"23b872dd","id":13848,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":{"id":13774,"nodeType":"OverrideSpecifier","overrides":[],"src":"2475:8:84"},"parameters":{"id":13773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13768,"mutability":"mutable","name":"src","nodeType":"VariableDeclaration","scope":13848,"src":"2408:11:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13767,"name":"address","nodeType":"ElementaryTypeName","src":"2408:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13770,"mutability":"mutable","name":"dst","nodeType":"VariableDeclaration","scope":13848,"src":"2429:11:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13769,"name":"address","nodeType":"ElementaryTypeName","src":"2429:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13772,"mutability":"mutable","name":"wad","nodeType":"VariableDeclaration","scope":13848,"src":"2450:11:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13771,"name":"uint256","nodeType":"ElementaryTypeName","src":"2450:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2398:69:84"},"returnParameters":{"id":13777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13776,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13848,"src":"2493:4:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13775,"name":"bool","nodeType":"ElementaryTypeName","src":"2493:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2492:6:84"},"scope":13849,"src":"2377:535:84","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":13850,"src":"836:2078:84"}],"src":"731:2184:84"},"id":84}},"contracts":{"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol":{"IAuthorizerAdaptor":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getVault()":"8d928af8","performAction(address,bytes)":"4036176a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"performAction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"performAction(address,bytes)\":{\"params\":{\"data\":\"- Calldata to be sent to the target contract\",\"target\":\"- Address of the contract to be called\"},\"returns\":{\"_0\":\"The bytes encoded return value from the performed function call\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"performAction(address,bytes)\":{\"notice\":\"Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":\"IAuthorizerAdaptor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0x1e5bca6b4fb897adc2458f65aa7abed8499dcf146ac5872c62544d91516867cb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faa81254fe029b7ccd05635d6919da30bcb2114026996d10f6b51fc0e1f5b850\",\"dweb:/ipfs/Qmax3d2kq51xjt6hjYgskuXSrsB3fBZ4LAxBPRDDzbg8XD\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol":{"IBalancerMinter":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"address","name":"gauge","type":"address"},{"indexed":false,"internalType":"uint256","name":"minted","type":"uint256"}],"name":"Minted","type":"event"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"allowed_to_mint_for","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerTokenAdmin","outputs":[{"internalType":"contract IBalancerTokenAdmin","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeController","outputs":[{"internalType":"contract IGaugeController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getMinterApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"}],"name":"mintMany","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"address","name":"user","type":"address"}],"name":"mintManyFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mint_for","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[8]","name":"gauges","type":"address[8]"}],"name":"mint_many","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"gauge","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"}],"name":"setMinterApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"setMinterApprovalWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"toggle_approve_mint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowed_to_mint_for(address,address)":"a0990033","getBalancerToken()":"c0039699","getBalancerTokenAdmin()":"e6dec36f","getGaugeController()":"58de9ade","getMinterApproval(address,address)":"3c543bc6","mint(address)":"6a627842","mintFor(address,address)":"7504a15d","mintMany(address[])":"397ada21","mintManyFor(address[],address)":"3b9f7384","mint_for(address,address)":"27f18ae3","mint_many(address[8])":"a51e1904","minted(address,address)":"8b752bb0","setMinterApproval(address,bool)":"0de54ba0","setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)":"c6542794","toggle_approve_mint(address)":"dd289d60"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minted\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed_to_mint_for\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerTokenAdmin\",\"outputs\":[{\"internalType\":\"contract IBalancerTokenAdmin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeController\",\"outputs\":[{\"internalType\":\"contract IGaugeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getMinterApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"mintMany\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintManyFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mint_for\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[8]\",\"name\":\"gauges\",\"type\":\"address[8]\"}],\"name\":\"mint_many\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"minted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setMinterApprovalWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"toggle_approve_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"mint(address)\":{\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\"}},\"mintFor(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mintMany(address[])\":{\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}},\"mintManyFor(address[],address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\",\"user\":\"Address to mint to\"}},\"mint_for(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mint_many(address[8])\":{\"details\":\"This function is not recommended as `mintMany()` is more flexible and gas efficient\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowed_to_mint_for(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"getBalancerToken()\":{\"notice\":\"Returns the address of the Balancer Governance Token\"},\"getBalancerTokenAdmin()\":{\"notice\":\"Returns the address of the Balancer Token Admin contract\"},\"getGaugeController()\":{\"notice\":\"Returns the address of the Gauge Controller\"},\"getMinterApproval(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"mint(address)\":{\"notice\":\"Mint everything which belongs to `msg.sender` and send to them\"},\"mintFor(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mintMany(address[])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"mintManyFor(address[],address)\":{\"notice\":\"Mint tokens for `user` across multiple gauges\"},\"mint_for(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mint_many(address[8])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"minted(address,address)\":{\"notice\":\"The total number of tokens minted for `user` from `gauge`\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on your behalf\"},\"setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing them.\"},\"toggle_approve_mint(address)\":{\"notice\":\"Toggle whether `minter` is approved to mint tokens for `user`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":\"IBalancerMinter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0x1e5bca6b4fb897adc2458f65aa7abed8499dcf146ac5872c62544d91516867cb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faa81254fe029b7ccd05635d6919da30bcb2114026996d10f6b51fc0e1f5b850\",\"dweb:/ipfs/Qmax3d2kq51xjt6hjYgskuXSrsB3fBZ4LAxBPRDDzbg8XD\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0x286a4b1cb4a632954e58c68baac671fb0dcbd139c5a353b0419088b0de40477c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0b57ab7eadc573d8d23b3668b90412e65182beea79726c1a1b8cb57f76abc74a\",\"dweb:/ipfs/QmfNe6Uu4S4xMDzMktJnGz92MT6zVENi3Rye2AazUcrLL4\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0x6975f1e2199b1d9e4fff7133f9e9ab652e2f378d38551d33393eec50f459574a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2c4b81b8bb50d58afee844cdc06a04bca72b379f51eda3289a9cc4ff97a80dfc\",\"dweb:/ipfs/QmR1b9e6Ku7H3ea4yBGmUznqabtioTkktRWvhZFgRUZWy4\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0x3b9e1e7098293244e9e4b1b1e26f973949bea15e2477115fadf4b5157fcab9de\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cc5542e3a2546434ba0de87e5a3937ef0a7816cda2bc25eaaa7e8ddba2d4e281\",\"dweb:/ipfs/QmNZDUex4e3TdkxLrEyqEyusBpC4xfETwvgrqHUEyGkYNE\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xfdbd854a6467bd4aa3523b47c030858b505f87d39abdfb6e97f020a9c303fd17\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4465839b424de5a8f1b83b1f2a689076ce3d99efe2528336f32945191257abcc\",\"dweb:/ipfs/QmSVS4K9f2UMDpqXBg82r2bUeutUihk1hmYuCvw9iEeLWk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0x3d362ad70a19a0307bc9af2b053c4de85a4e0aacf1eb6b1fb5083873b8a62045\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3b141dcb49084bd633c4b95765c57e760deadf484a599e7f8fcbb74a46febe3f\",\"dweb:/ipfs/QmQz9P1bWh8mNQUxz5jdqNqwS226osyCPbQA8DznFspf4f\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol":{"IBalancerToken":{"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":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNAPSHOT_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":"amount","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":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","MINTER_ROLE()":"d5391393","SNAPSHOT_ROLE()":"7028e2cd","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getRoleAdmin(bytes32)":"248a9ca3","getRoleMember(bytes32,uint256)":"9010d07c","getRoleMemberCount(bytes32)":"ca15c873","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","mint(address,uint256)":"40c10f19","revokeRole(bytes32,address)":"d547741f","snapshot()":"9711715a","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"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\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SNAPSHOT_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"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\":\"amount\",\"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\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"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 `amount` 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 amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` 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\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":\"IBalancerToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0x6975f1e2199b1d9e4fff7133f9e9ab652e2f378d38551d33393eec50f459574a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2c4b81b8bb50d58afee844cdc06a04bca72b379f51eda3289a9cc4ff97a80dfc\",\"dweb:/ipfs/QmR1b9e6Ku7H3ea4yBGmUznqabtioTkktRWvhZFgRUZWy4\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol":{"IBalancerTokenAdmin":{"abi":[{"inputs":[],"name":"INITIAL_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_REDUCTION_COEFFICIENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_REDUCTION_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IBalancerToken","name":"","type":"address"}],"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":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startEpochTimeWrite","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"INITIAL_RATE()":"4dbac733","RATE_DENOMINATOR()":"7efad8e0","RATE_REDUCTION_COEFFICIENT()":"21609bbf","RATE_REDUCTION_TIME()":"b87b5616","activate()":"0f15f4c0","getActionId(bytes4)":"851c1bb3","getBalancerToken()":"c0039699","mint(address,uint256)":"40c10f19","rate()":"2c4e722e","startEpochTimeWrite()":"a228bced"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"INITIAL_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_REDUCTION_COEFFICIENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_REDUCTION_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startEpochTimeWrite\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getBalancerToken()\":{\"notice\":\"Returns the address of the Balancer Governance Token\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":\"IBalancerTokenAdmin\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0x6975f1e2199b1d9e4fff7133f9e9ab652e2f378d38551d33393eec50f459574a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2c4b81b8bb50d58afee844cdc06a04bca72b379f51eda3289a9cc4ff97a80dfc\",\"dweb:/ipfs/QmR1b9e6Ku7H3ea4yBGmUznqabtioTkktRWvhZFgRUZWy4\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0x3b9e1e7098293244e9e4b1b1e26f973949bea15e2477115fadf4b5157fcab9de\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cc5542e3a2546434ba0de87e5a3937ef0a7816cda2bc25eaaa7e8ddba2d4e281\",\"dweb:/ipfs/QmNZDUex4e3TdkxLrEyqEyusBpC4xfETwvgrqHUEyGkYNE\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol":{"IGaugeController":{"abi":[{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"int128","name":"gaugeType","type":"int128"}],"name":"add_gauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"weight","type":"uint256"}],"name":"add_type","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"contract IAuthorizerAdaptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int128","name":"typeId","type":"int128"},{"internalType":"uint256","name":"weight","type":"uint256"}],"name":"change_type_weight","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"checkpoint_gauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"gauge_relative_weight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"gauge_types","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"n_gauge_types","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"voting_escrow","outputs":[{"internalType":"contract IVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"add_gauge(address,int128)":"3a04f900","add_type(string,uint256)":"92d0d232","admin()":"f851a440","change_type_weight(int128,uint256)":"db1ca260","checkpoint_gauge(address)":"615e5237","gauge_relative_weight(address,uint256)":"d3078c94","gauge_types(address)":"3f9095b7","n_gauge_types()":"9fba03a1","token()":"fc0c546a","voting_escrow()":"dfe05031"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"int128\",\"name\":\"gaugeType\",\"type\":\"int128\"}],\"name\":\"add_gauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"add_type\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int128\",\"name\":\"typeId\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"change_type_weight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"checkpoint_gauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"gauge_relative_weight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"gauge_types\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"n_gauge_types\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"voting_escrow\",\"outputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":\"IGaugeController\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0x1e5bca6b4fb897adc2458f65aa7abed8499dcf146ac5872c62544d91516867cb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faa81254fe029b7ccd05635d6919da30bcb2114026996d10f6b51fc0e1f5b850\",\"dweb:/ipfs/Qmax3d2kq51xjt6hjYgskuXSrsB3fBZ4LAxBPRDDzbg8XD\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xfdbd854a6467bd4aa3523b47c030858b505f87d39abdfb6e97f020a9c303fd17\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4465839b424de5a8f1b83b1f2a689076ce3d99efe2528336f32945191257abcc\",\"dweb:/ipfs/QmSVS4K9f2UMDpqXBg82r2bUeutUihk1hmYuCvw9iEeLWk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0x3d362ad70a19a0307bc9af2b053c4de85a4e0aacf1eb6b1fb5083873b8a62045\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3b141dcb49084bd633c4b95765c57e760deadf484a599e7f8fcbb74a46febe3f\",\"dweb:/ipfs/QmQz9P1bWh8mNQUxz5jdqNqwS226osyCPbQA8DznFspf4f\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol":{"ILiquidityGauge":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getCappedRelativeWeight(uint256)":"14e956f5","getRelativeWeightCap()":"83f5c39b","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}},\"user_checkpoint(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"bool Always true.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"},\"user_checkpoint(address)\":{\"notice\":\"Record a checkpoint for a given user.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":\"ILiquidityGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xabf0bcc23e4f5fa8e85af800f53c925e26e104ea13e238ef6762ca8221b382a4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c71e3a291a6343ad77f7b4fb4fe1df4519e6a8b6e9335743f288154ea688584f\",\"dweb:/ipfs/QmSmZ7Jrqw9reCab8H9RHuDPduiXh7YUJY1UgsMYxZ26Zp\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol":{"IRewardTokenDistributor":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"add_reward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"claim_rewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit_reward_token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"reward_data","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"distributor","type":"address"},{"internalType":"uint256","name":"period_finish","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"last_update","type":"uint256"},{"internalType":"uint256","name":"integral","type":"uint256"}],"internalType":"struct IRewardTokenDistributor.Reward","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"reward_tokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"set_reward_distributor","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"add_reward(address,address)":"e8de0d4d","claim_rewards(address)":"84e9bd7e","claimable_reward(address,address)":"33fd6f74","claimable_reward_write(address,address)":"59b7e409","deposit_reward_token(address,uint256)":"93f7aa67","reward_data(address)":"48e9c65e","reward_tokens(uint256)":"54c49fe9","set_reward_distributor(address,address)":"058a3a24"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"add_reward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claim_rewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit_reward_token\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"reward_data\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"period_finish\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last_update\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"integral\",\"type\":\"uint256\"}],\"internalType\":\"struct IRewardTokenDistributor.Reward\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"reward_tokens\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"set_reward_distributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":\"IRewardTokenDistributor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x01a7009af37017ca4e06fec645da25e6a5c75b4c3738a04bd227f92742cfb7ae\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae3267797ca92f4e8286a9f7fc6d59ac03d93046f544ec6740e80c100f4ebe4a\",\"dweb:/ipfs/QmUGa72iyfk54ex9qpHcgpbUcHbHDnghy136nZBkbmEZu5\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol":{"IStakingLiquidityGauge":{"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":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","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":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"add_reward","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":"amount","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":[{"internalType":"address","name":"user","type":"address"}],"name":"claim_rewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit_reward_token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"lpToken","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lp_token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"reward_data","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"distributor","type":"address"},{"internalType":"uint256","name":"period_finish","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"last_update","type":"uint256"},{"internalType":"uint256","name":"integral","type":"uint256"}],"internalType":"struct IRewardTokenDistributor.Reward","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"reward_tokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"set_reward_distributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"add_reward(address,address)":"e8de0d4d","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","claim_rewards(address)":"84e9bd7e","claimable_reward(address,address)":"33fd6f74","claimable_reward_write(address,address)":"59b7e409","deposit(uint256,address)":"6e553f65","deposit_reward_token(address,uint256)":"93f7aa67","getCappedRelativeWeight(uint256)":"14e956f5","getRelativeWeightCap()":"83f5c39b","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","lp_token()":"82c63066","reward_data(address)":"48e9c65e","reward_tokens(uint256)":"54c49fe9","setRelativeWeightCap(uint256)":"10d3eb04","set_reward_distributor(address,address)":"058a3a24","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"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\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"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\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"add_reward\",\"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\":\"amount\",\"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\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claim_rewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit_reward_token\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lpToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lp_token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"reward_data\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"period_finish\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last_update\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"integral\",\"type\":\"uint256\"}],\"internalType\":\"struct IRewardTokenDistributor.Reward\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"reward_tokens\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"set_reward_distributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"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 `amount` 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 amount of tokens owned by `account`.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"user_checkpoint(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"bool Always true.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"},\"user_checkpoint(address)\":{\"notice\":\"Record a checkpoint for a given user.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":\"IStakingLiquidityGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xabf0bcc23e4f5fa8e85af800f53c925e26e104ea13e238ef6762ca8221b382a4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c71e3a291a6343ad77f7b4fb4fe1df4519e6a8b6e9335743f288154ea688584f\",\"dweb:/ipfs/QmSmZ7Jrqw9reCab8H9RHuDPduiXh7YUJY1UgsMYxZ26Zp\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x01a7009af37017ca4e06fec645da25e6a5c75b4c3738a04bd227f92742cfb7ae\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae3267797ca92f4e8286a9f7fc6d59ac03d93046f544ec6740e80c100f4ebe4a\",\"dweb:/ipfs/QmUGa72iyfk54ex9qpHcgpbUcHbHDnghy136nZBkbmEZu5\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0x797adbaaae6b7c50752e62bec5e56b554cdbf1f48b1cbd062f7304ea77330f94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c811af7ea4517079e04d5e53e05b871e838f122faf70e3b47d426204b3c79bde\",\"dweb:/ipfs/QmY2oNRdUCswLSDcptE5zkuiyGg1JRk1YP5zojPqFSWLa4\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol":{"IVotingEscrow":{"abi":[{"inputs":[],"name":"admin","outputs":[{"internalType":"contract IAuthorizerAdaptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"apply_smart_wallet_checker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSmartWalletChecker","type":"address"}],"name":"commit_smart_wallet_checker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"epoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"point_history","outputs":[{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"smart_wallet_checker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_point_epoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"user_point_history","outputs":[{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"","type":"tuple"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"admin()":"f851a440","apply_smart_wallet_checker()":"8e5b490f","checkpoint()":"c2c4c5c1","commit_smart_wallet_checker(address)":"57f901e2","epoch()":"900cf0cf","point_history(uint256)":"d1febfb9","smart_wallet_checker()":"7175d4f7","totalSupply(uint256)":"bd85b039","user_point_epoch(address)":"010ae757","user_point_history(address,uint256)":"28d09d47"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"apply_smart_wallet_checker\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newSmartWalletChecker\",\"type\":\"address\"}],\"name\":\"commit_smart_wallet_checker\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"point_history\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"smart_wallet_checker\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_point_epoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"user_point_history\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":\"IVotingEscrow\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0x1e5bca6b4fb897adc2458f65aa7abed8499dcf146ac5872c62544d91516867cb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faa81254fe029b7ccd05635d6919da30bcb2114026996d10f6b51fc0e1f5b850\",\"dweb:/ipfs/Qmax3d2kq51xjt6hjYgskuXSrsB3fBZ4LAxBPRDDzbg8XD\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0x3d362ad70a19a0307bc9af2b053c4de85a4e0aacf1eb6b1fb5083873b8a62045\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3b141dcb49084bd633c4b95765c57e760deadf484a599e7f8fcbb74a46febe3f\",\"dweb:/ipfs/QmQz9P1bWh8mNQUxz5jdqNqwS226osyCPbQA8DznFspf4f\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol":{"IButtonWrapper":{"abi":[{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burnAllTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"depositFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"underlyingToWrapper","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"withdrawAllTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"withdrawTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"wrapperToUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"balanceOfUnderlying(address)":"3af9e669","burn(uint256)":"42966c68","burnAll()":"9975038c","burnAllTo(address)":"a4fa9568","burnTo(address,uint256)":"ea785a5e","deposit(uint256)":"b6b55f25","depositFor(address,uint256)":"2f4f21e2","mint(uint256)":"a0712d68","mintFor(address,uint256)":"da1919b3","totalUnderlying()":"c70920bc","underlying()":"6f307dc3","underlyingToWrapper(uint256)":"ed0287c0","withdraw(uint256)":"2e1a7d4d","withdrawAll()":"853828b6","withdrawAllTo(address)":"ca9add8f","withdrawTo(address,uint256)":"205c2878","wrapperToUnderlying(uint256)":"aab3b7db"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burnAll\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burnAllTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"depositFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"underlyingToWrapper\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawAll\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawAllTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"wrapperToUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"balanceOfUnderlying(address)\":{\"params\":{\"who\":\"The account address.\"},\"returns\":{\"_0\":\"The underlying token balance of the account.\"}},\"burn(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to burn.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnAll()\":{\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnAllTo(address)\":{\"params\":{\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnTo(address,uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to burn.\",\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"deposit(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens to deposit.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens mint.\"}},\"depositFor(address,uint256)\":{\"params\":{\"to\":\"The beneficiary account.\",\"uAmount\":\"The amount of underlying tokens to deposit.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens mint.\"}},\"mint(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to mint.\"},\"returns\":{\"_0\":\"The amount of underlying tokens deposited.\"}},\"mintFor(address,uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to mint.\",\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens deposited.\"}},\"totalUnderlying()\":{\"returns\":{\"_0\":\"The total underlying tokens held by the wrapper contract.\"}},\"underlying()\":{\"returns\":{\"_0\":\"The address of the underlying token.\"}},\"underlyingToWrapper(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens exchangeable.\"}},\"withdraw(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens to withdraw.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawAll()\":{\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawAllTo(address)\":{\"params\":{\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawTo(address,uint256)\":{\"params\":{\"to\":\"The beneficiary account.\",\"uAmount\":\"The amount of underlying tokens to withdraw.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"wrapperToUnderlying(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens.\"},\"returns\":{\"_0\":\"The amount of underlying tokens exchangeable.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnAll()\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnAllTo(address)\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnTo(address,uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens to the specified beneficiary.\"},\"deposit(uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"depositFor(address,uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"mint(uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens.\"},\"mintFor(address,uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"withdraw(uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawAll()\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawAllTo(address)\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawTo(address,uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back to the specified beneficiary.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol\":\"IButtonWrapper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol\":{\"keccak256\":\"0xc82d42ae8b0d8beecd14924f2719b24bc602d1e8df4365dfb0cc3f63a32cb179\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a61895cdecdc5fe04ad2495dfc80a4ce438b4d42d21995739e3e225cbb786582\",\"dweb:/ipfs/QmSYVb7NwdPMXxdsvGYhWyvKNbdrP4fWRGvsygdCj5SZMt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol":{"IReaperTokenVault":{"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":"amount","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":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPricePerFullShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","deposit(uint256)":"b6b55f25","getPricePerFullShare()":"77c7b8fc","token()":"fc0c546a","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"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\":\"amount\",\"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\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPricePerFullShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"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 `amount` 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 amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"returns the number of decimals for this vault token. For reaper single-strat vaults, the decimals are fixed to 18.\"},\"deposit(uint256)\":{\"params\":{\"_amount\":\"The quantity of tokens to deposit.*\"}},\"getPricePerFullShare()\":{\"details\":\"returns the price for a single Vault share (ie rf-scfUSDT). The getPricePerFullShare is always in 1e18\"},\"token()\":{\"details\":\"returns the address of the vault's underlying asset (mainToken)\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` 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\":{\"deposit(uint256)\":{\"notice\":\"Deposits `_amount` `token`, issuing shares to the caller. If Panic is activated, deposits will not be accepted and this call will fail.\"},\"withdraw(uint256)\":{\"notice\":\"Withdraws the calling account's tokens from this Vault, redeeming amount `_shares` for an appropriate amount of tokens.*\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol\":\"IReaperTokenVault\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol\":{\"keccak256\":\"0xe57447223cab81039085813da021bd12552b1b27f3c7c03031b87f39b390bec3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c0a50b3ea4244e80eb180d4e6b94e7a56c9bee394ac89d085b19ff194fc10dbe\",\"dweb:/ipfs/QmYa7jzRRhjMLqrKrL8bCDX3rc5RU2rzhZ7Df7Z5r6S6L9\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol":{"IUnbuttonToken":{"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":"amount","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":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burnAllTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"depositFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"underlyingToWrapper","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"withdrawAllTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"withdrawTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"wrapperToUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOfUnderlying(address)":"3af9e669","burn(uint256)":"42966c68","burnAll()":"9975038c","burnAllTo(address)":"a4fa9568","burnTo(address,uint256)":"ea785a5e","deposit(uint256)":"b6b55f25","depositFor(address,uint256)":"2f4f21e2","mint(uint256)":"a0712d68","mintFor(address,uint256)":"da1919b3","totalSupply()":"18160ddd","totalUnderlying()":"c70920bc","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3","underlyingToWrapper(uint256)":"ed0287c0","withdraw(uint256)":"2e1a7d4d","withdrawAll()":"853828b6","withdrawAllTo(address)":"ca9add8f","withdrawTo(address,uint256)":"205c2878","wrapperToUnderlying(uint256)":"aab3b7db"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"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\":\"amount\",\"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\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burnAll\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burnAllTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"depositFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"underlyingToWrapper\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawAll\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawAllTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"wrapperToUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"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 `amount` 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 amount of tokens owned by `account`.\"},\"balanceOfUnderlying(address)\":{\"params\":{\"who\":\"The account address.\"},\"returns\":{\"_0\":\"The underlying token balance of the account.\"}},\"burn(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to burn.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnAll()\":{\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnAllTo(address)\":{\"params\":{\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnTo(address,uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to burn.\",\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"deposit(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens to deposit.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens mint.\"}},\"depositFor(address,uint256)\":{\"params\":{\"to\":\"The beneficiary account.\",\"uAmount\":\"The amount of underlying tokens to deposit.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens mint.\"}},\"mint(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to mint.\"},\"returns\":{\"_0\":\"The amount of underlying tokens deposited.\"}},\"mintFor(address,uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to mint.\",\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens deposited.\"}},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"totalUnderlying()\":{\"returns\":{\"_0\":\"The total underlying tokens held by the wrapper contract.\"}},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"underlying()\":{\"returns\":{\"_0\":\"The address of the underlying token.\"}},\"underlyingToWrapper(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens exchangeable.\"}},\"withdraw(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens to withdraw.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawAll()\":{\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawAllTo(address)\":{\"params\":{\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawTo(address,uint256)\":{\"params\":{\"to\":\"The beneficiary account.\",\"uAmount\":\"The amount of underlying tokens to withdraw.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"wrapperToUnderlying(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens.\"},\"returns\":{\"_0\":\"The amount of underlying tokens exchangeable.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnAll()\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnAllTo(address)\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnTo(address,uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens to the specified beneficiary.\"},\"deposit(uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"depositFor(address,uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"mint(uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens.\"},\"mintFor(address,uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"withdraw(uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawAll()\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawAllTo(address)\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawTo(address,uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back to the specified beneficiary.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol\":\"IUnbuttonToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol\":{\"keccak256\":\"0xc82d42ae8b0d8beecd14924f2719b24bc602d1e8df4365dfb0cc3f63a32cb179\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a61895cdecdc5fe04ad2495dfc80a4ce438b4d42d21995739e3e225cbb786582\",\"dweb:/ipfs/QmSYVb7NwdPMXxdsvGYhWyvKNbdrP4fWRGvsygdCj5SZMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol\":{\"keccak256\":\"0x6ea477094e5c51c7f6bc107e13503fbe18db2b22b61909a2ff08106e374b0e72\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1eb6e93ae0e2758c85121bcd61226211a1f1996944c1849eafc8d30e5f7364af\",\"dweb:/ipfs/QmcTJAa437Mk9YxiXWnhKP2sVYHFEgwrjnrA6ubzJtuhFV\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol":{"StablePoolUserData":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122013c5973bad63bd98629a00602ed1cc829399f7a43f5240370a839134cce5811964736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT 0xC5 SWAP8 EXTCODESIZE 0xAD PUSH4 0xBD98629A STOP PUSH1 0x2E 0xD1 0xCC DUP3 SWAP4 SWAP10 0xF7 LOG4 EXTCODEHASH MSTORE BLOCKHASH CALLDATACOPY EXP DUP4 SWAP2 CALLVALUE 0xCC 0xE5 DUP2 NOT PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"713:1600:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122013c5973bad63bd98629a00602ed1cc829399f7a43f5240370a839134cce5811964736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT 0xC5 SWAP8 EXTCODESIZE 0xAD PUSH4 0xBD98629A STOP PUSH1 0x2E 0xD1 0xCC DUP3 SWAP4 SWAP10 0xF7 LOG4 EXTCODEHASH MSTORE BLOCKHASH CALLDATACOPY EXP DUP4 SWAP2 CALLVALUE 0xCC 0xE5 DUP2 NOT PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"713:1600:12:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol\":\"StablePoolUserData\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol\":{\"keccak256\":\"0xea9c3ac559fcb248b13d345f7b0dd267173e11a56804186bc689971aeedd15a9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c89254dab1a84abe22b8527e8d7bd4c9195bfa8bc49f4016b0e66d6069a697ef\",\"dweb:/ipfs/QmbursnX1j9a2JwrpTzhVHrcsgng8EgCDYMbTjwibvCdj3\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol":{"WeightedPoolUserData":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209612d62914c851238e4077d86d87ef006ca99aff96d0f20e38157081de8d645264736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP7 SLT 0xD6 0x29 EQ 0xC8 MLOAD 0x23 DUP15 BLOCKHASH PUSH24 0xD86D87EF006CA99AFF96D0F20E38157081DE8D645264736F PUSH13 0x63430007010033000000000000 ","sourceMap":"766:2385:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209612d62914c851238e4077d86d87ef006ca99aff96d0f20e38157081de8d645264736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP7 SLT 0xD6 0x29 EQ 0xC8 MLOAD 0x23 DUP15 BLOCKHASH PUSH24 0xD86D87EF006CA99AFF96D0F20E38157081DE8D645264736F PUSH13 0x63430007010033000000000000 ","sourceMap":"766:2385:13:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":\"WeightedPoolUserData\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":{\"keccak256\":\"0x77711c8f7dffb3ec7c6ade6aa8130dfcf905920e1f4de2cc14a8869f356c1e7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0d7b48b6172bc6ece5bb47acab7541c0e7bafe0c05b77c36231fd9d0563669ff\",\"dweb:/ipfs/QmQoqo3qshSWXD3PwkhEoLzfcZEv56zpYKAtzXEyh8h3oo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol":{"Errors":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ca965609751c2043f614aa3a01f92449c0f01c84aa82828b806b8df7147372f064736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA SWAP7 JUMP MULMOD PUSH22 0x1C2043F614AA3A01F92449C0F01C84AA82828B806B8D 0xF7 EQ PUSH20 0x72F064736F6C6343000701003300000000000000 ","sourceMap":"5050:9524:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ca965609751c2043f614aa3a01f92449c0f01c84aa82828b806b8df7147372f064736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA SWAP7 JUMP MULMOD PUSH22 0x1C2043F614AA3A01F92449C0F01C84AA82828B806B8D 0xF7 EQ PUSH20 0x72F064736F6C6343000701003300000000000000 ","sourceMap":"5050:9524:14:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":\"Errors\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol":{"IAuthentication":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":\"IAuthentication\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol":{"ISignaturesValidator":{"abi":[{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the SignatureValidator helper, used to support meta-transactions.\",\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"getNextNonce(address)\":{\"details\":\"Returns the next nonce used by an address to sign messages.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":\"ISignaturesValidator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol":{"ITemporarilyPausable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PausedStateChanged","type":"event"},{"inputs":[],"name":"getPausedState","outputs":[{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"uint256","name":"pauseWindowEndTime","type":"uint256"},{"internalType":"uint256","name":"bufferPeriodEndTime","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getPausedState()":"1c0de051"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PausedStateChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bufferPeriodEndTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the TemporarilyPausable helper.\",\"events\":{\"PausedStateChanged(bool)\":{\"details\":\"Emitted every time the pause state changes by `_setPaused`.\"}},\"kind\":\"dev\",\"methods\":{\"getPausedState()\":{\"details\":\"Returns the current paused state.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":\"ITemporarilyPausable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/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":"caller","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":"caller","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":"amount","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":"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":[{"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":"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":"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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"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","deposit(uint256,address)":"6e553f65","redeem(uint256,address,address)":"ba087652","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"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\":\"caller\",\"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\":\"caller\",\"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\":\"amount\",\"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\":\"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\":[{\"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\":\"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\":\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Deposit(address,address,uint256,uint256)\":{\"details\":\"`caller` has exchanged `assets` for `shares`, and transferred those `shares` to `owner`.\"},\"Withdraw(address,address,address,uint256,uint256)\":{\"details\":\"`caller` has exchanged `shares`, owned by `owner`, for `assets`, and transferred those `assets` to `receiver`.\"}},\"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 `amount` 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\":\"The address of the underlying token that the Vault uses for accounting, depositing, and withdrawing.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"convertToAssets(uint256)\":{\"details\":\"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.\"},\"convertToShares(uint256)\":{\"details\":\"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.\"},\"deposit(uint256,address)\":{\"details\":\"Mints `shares` Vault shares to `receiver` by depositing exactly `amount` of underlying tokens.\"},\"redeem(uint256,address,address)\":{\"details\":\"Burns exactly `shares` from `owner` and sends `assets` of underlying tokens to `receiver`.\"},\"totalAssets()\":{\"details\":\"Total amount of the underlying asset that is \\u201cmanaged\\u201d by Vault.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` 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\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol\":\"IERC4626\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol\":{\"keccak256\":\"0xcfcb9742bedeceeebb814066f8046522ae6e6440ea87bc265f48db345f586493\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b2a25f7b7621273d0567400ba318317d738cad231aeac8aecd3051d1a484a7c1\",\"dweb:/ipfs/QmeWczGrss48e7hnBkFHThExBnZW57nPUWSLsbS3yiw8o3\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol":{"IWETH":{"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":"amount","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":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","deposit()":"d0e30db0","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"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\":\"amount\",\"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\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for WETH9. See https://github.com/gnosis/canonical-weth/blob/0dd1ea3e295eef916d0c6223ec63141137d22d67/contracts/WETH9.sol\",\"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 `amount` 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 amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` 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\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":\"IWETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/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":"amount","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"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.7.1+commit.f4a555be\"},\"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\":\"amount\",\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"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 `amount` 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 amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` 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\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol":{"IERC20Permit":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over `owner`'s tokens, given `owner`'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":\"IERC20Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xffe929ce55ef0cbdcc60eee8bc9375c295757ad13afe3d757646538aa0429ff5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90091ad3a860b0baa930d9b4083b503eb9ce2d222f738ce3b009d434271a27ae\",\"dweb:/ipfs/QmeQxy2YHbeumMXxKqEnXF7pGw2Ke43cHzttG59WYHibVV\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol":{"IERC20PermitDAI":{"abi":[{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)":"8fcbaf0c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)\":{\"params\":{\"allowed\":\"Whether the spender is allowed or disallowed from spending\",\"expiry\":\"The time at which this expires (unix time)\",\"holder\":\"Token owner's address (Authorizer)\",\"nonce\":\"The permit nonce\",\"r\":\"r of the signature\",\"s\":\"s of the signature\",\"spender\":\"Spender's address\",\"v\":\"v of the signature\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)\":{\"notice\":\"update allowance with a signed permit\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol\":\"IERC20PermitDAI\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol\":{\"keccak256\":\"0x5a824b0b4eef59b949b7ed26f74a5ad6a636b8ac093bde3a5c7b8a4e1fb1a6c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a89b0cf610d119abd21b5fd8a44ce2641b3ff99d20ace39609ce8df361686597\",\"dweb:/ipfs/QmZzyKTWdEftt1oJZEoj9zgXACTLZNvwQJmFZQQQrzfDgn\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol":{"IBALTokenHolder":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sweepTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getName()":"17d7de7c","sweepTokens(address,address,uint256)":"8b6ca32c","withdrawFunds(address,uint256)":"c1075329"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sweepTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol\":\"IBALTokenHolder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol\":{\"keccak256\":\"0xeb9dca0126103531b1a848558e7295bcc99a1a75fb059ce93e91b665222af8f8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://40739f46fa7c7c0c301fa73b96d82a1b2f4580bc2321a700a3fde159500cd8f1\",\"dweb:/ipfs/QmZ6Hff3CUDQi4Et9Y2wkFz3wMHzjwpeAh97TaVYSgjiTm\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol":{"IBALTokenHolderFactory":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"create","outputs":[{"internalType":"contract IBALTokenHolder","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IBalancerToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"isHolderFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"create(string)":"b6a46b3b","getBalancerToken()":"c0039699","getVault()":"8d928af8","isHolderFromFactory(address)":"36390717"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"contract IBALTokenHolder\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"}],\"name\":\"isHolderFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol\":\"IBALTokenHolderFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0x6975f1e2199b1d9e4fff7133f9e9ab652e2f378d38551d33393eec50f459574a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2c4b81b8bb50d58afee844cdc06a04bca72b379f51eda3289a9cc4ff97a80dfc\",\"dweb:/ipfs/QmR1b9e6Ku7H3ea4yBGmUznqabtioTkktRWvhZFgRUZWy4\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol\":{\"keccak256\":\"0xeb9dca0126103531b1a848558e7295bcc99a1a75fb059ce93e91b665222af8f8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://40739f46fa7c7c0c301fa73b96d82a1b2f4580bc2321a700a3fde159500cd8f1\",\"dweb:/ipfs/QmZ6Hff3CUDQi4Et9Y2wkFz3wMHzjwpeAh97TaVYSgjiTm\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol\":{\"keccak256\":\"0xc7cc9a56051950e8e6121e89b701506465b8e7061aa3695cb0a0114e875c03e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d4f5a3ce36f4e29e137dbd79c9f5bb44c4eff236a80dd6192833bdc9bcb17e8\",\"dweb:/ipfs/QmdMDYkhWDfsBcr1qRGjqoogyn4dVYdYFZRSwfX3ST1Ahs\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol":{"IBalancerQueries":{"abi":[{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"}],"name":"queryBatchSwap","outputs":[{"internalType":"int256[]","name":"assetDeltas","type":"int256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"}],"name":"queryExit","outputs":[{"internalType":"uint256","name":"bptIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"}],"name":"queryJoin","outputs":[{"internalType":"uint256","name":"bptOut","type":"uint256"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"}],"name":"querySwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"queryBatchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool))":"f84d066e","queryExit(bytes32,address,address,(address[],uint256[],bytes,bool))":"c7b2c52c","queryJoin(bytes32,address,address,(address[],uint256[],bytes,bool))":"9ebbf05d","querySwap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool))":"e969f6b3"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"}],\"name\":\"queryBatchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"assetDeltas\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"queryExit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"queryJoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"}],\"name\":\"querySwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Provides a way to perform queries on swaps, joins and exits, simulating these operations and returning the exact result they would have if called on the Vault given the current state. Note that the results will be affected by other transactions interacting with the Pools involved. All query functions can be called both on-chain and off-chain. If calling them from a contract, note that all query functions are not `view`. Despite this, these functions produce no net state change, and for all intents and purposes can be thought of as if they were indeed `view`. However, calling them via STATICCALL will fail. If calling them from an off-chain client, make sure to use eth_call: most clients default to eth_sendTransaction for non-view functions. In all cases, the `fromInternalBalance` and `toInternalBalance` fields are entirely ignored: we just use the same structs for simplicity.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol\":\"IBalancerQueries\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol\":{\"keccak256\":\"0x18a8405e00b152fa954b5a9952ac449f08c7715d7df762a165d9ab8976233690\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8ffd269f55603d8a1a173f73f099008ab2932f8605fec33e76181c70941a61f8\",\"dweb:/ipfs/QmUPWpFGUSxKfAGE2FeUqUWSCBCGBsgRqBNpp1EfE1YvKb\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol":{"IBalancerRelayer":{"abi":[{"inputs":[],"name":"getLibrary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getLibrary()":"7678922e","getVault()":"8d928af8","multicall(bytes[])":"ac9650d8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"IBalancerRelayer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows safe multicall execution of a relayer's functions\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":\"IBalancerRelayer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":{\"keccak256\":\"0x00d423628736cf6e571187b6327a8ab9fdf947283582345cc6048ca3086b79a0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://919890e34754f13e43d3bc3f6f07674c4db0f2faf4fe7d1e8246d5513628ac72\",\"dweb:/ipfs/QmSqhMvXntJFgP7EmfZKrVG8t3oQqweYg4WWnV1JNnFUTu\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol":{"IProtocolFeePercentagesProvider":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"feeType","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"ProtocolFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"feeType","type":"uint256"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"uint256","name":"maximumPercentage","type":"uint256"}],"name":"ProtocolFeeTypeRegistered","type":"event"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"getFeeTypeMaximumPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"getFeeTypeName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"getFeeTypePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"isValidFeeType","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"isValidFeeTypePercentage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"maximumValue","type":"uint256"},{"internalType":"uint256","name":"initialValue","type":"uint256"}],"name":"registerFeeType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"},{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setFeeTypePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getFeeTypeMaximumPercentage(uint256)":"5e2cae4c","getFeeTypeName(uint256)":"b661eda1","getFeeTypePercentage(uint256)":"1a7c3263","isValidFeeType(uint256)":"868897a0","isValidFeeTypePercentage(uint256,uint256)":"74735e0b","registerFeeType(uint256,string,uint256,uint256)":"7268d6ce","setFeeTypePercentage(uint256,uint256)":"4d44f0e9"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"percentage\",\"type\":\"uint256\"}],\"name\":\"ProtocolFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maximumPercentage\",\"type\":\"uint256\"}],\"name\":\"ProtocolFeeTypeRegistered\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"getFeeTypeMaximumPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"getFeeTypeName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"getFeeTypePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"isValidFeeType\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"isValidFeeTypePercentage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"maximumValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialValue\",\"type\":\"uint256\"}],\"name\":\"registerFeeType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"setFeeTypePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Source of truth for all Protocol Fee percentages, that is, how much the protocol charges certain actions. Some of these values may also be retrievable from other places (such as the swap fee percentage), but this is the preferred source nonetheless.\",\"kind\":\"dev\",\"methods\":{\"getFeeTypeMaximumPercentage(uint256)\":{\"details\":\"Returns `feeType`'s maximum value.\"},\"getFeeTypeName(uint256)\":{\"details\":\"Returns `feeType`'s name.\"},\"getFeeTypePercentage(uint256)\":{\"details\":\"Returns the current percentage value for `feeType`. This is the preferred mechanism for querying these - whenever possible, use this fucntion instead of e.g. querying the ProtocolFeesCollector.\"},\"isValidFeeType(uint256)\":{\"details\":\"Returns true if `feeType` has been registered and can be queried.\"},\"isValidFeeTypePercentage(uint256,uint256)\":{\"details\":\"Returns true if `value` is a valid percentage value for `feeType`.\"},\"registerFeeType(uint256,string,uint256,uint256)\":{\"details\":\"Registers a new fee type in the system, making it queryable via `getFeeTypePercentage` and `getFeeTypeName`, as well as configurable via `setFeeTypePercentage`. `feeType` can be any arbitrary value (that is not in use). It is not possible to de-register fee types, nor change their name or maximum value.\"},\"setFeeTypePercentage(uint256,uint256)\":{\"details\":\"Sets the percentage value for `feeType` to `newValue`. IMPORTANT: it is possible for a third party to modify the SWAP and FLASH_LOAN fee type values directly in the ProtocolFeesCollector, without invoking this function. This will result in the `ProtocolFeePercentageChanged` event not being emitted despite their value changing. Such usage of the ProtocolFeesCollector is however discouraged: only this contract should be granted permission to call `setSwapFeePercentage` and `setFlashLoanFeePercentage`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\":\"IProtocolFeePercentagesProvider\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\":{\"keccak256\":\"0xf6fd47a273c8f275d115dac4d216acffd976573410a5f92e2dd8c1125ce3b134\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://41febf9d4bc242065cb96d9d1258e926bf1b4f4c36131964cbf0b4cdd5ce1f99\",\"dweb:/ipfs/QmbKk893VkGw3w49xWyQS8ehqdXxbL4sqNW6TcWMXRpnGu\"]}},\"version\":1}"},"ProtocolFeeType":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203a11cd6d43ae6e07e2db8f8a91d8b47a54fb787ca756877f50d58690057cc1f064736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE GT 0xCD PUSH14 0x43AE6E07E2DB8F8A91D8B47A54FB PUSH25 0x7CA756877F50D58690057CC1F064736F6C6343000701003300 ","sourceMap":"3992:551:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203a11cd6d43ae6e07e2db8f8a91d8b47a54fb787ca756877f50d58690057cc1f064736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE GT 0xCD PUSH14 0x43AE6E07E2DB8F8A91D8B47A54FB PUSH25 0x7CA756877F50D58690057CC1F064736F6C6343000701003300 ","sourceMap":"3992:551:27:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\":\"ProtocolFeeType\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\":{\"keccak256\":\"0xf6fd47a273c8f275d115dac4d216acffd976573410a5f92e2dd8c1125ce3b134\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://41febf9d4bc242065cb96d9d1258e926bf1b4f4c36131964cbf0b4cdd5ce1f99\",\"dweb:/ipfs/QmbKk893VkGw3w49xWyQS8ehqdXxbL4sqNW6TcWMXRpnGu\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol":{"IProtocolFeesWithdrawer":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenAllowlisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenDenylisted","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"allowlistToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"denylistToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getDenylistedToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDenylistedTokensLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeesCollector","outputs":[{"internalType":"contract IProtocolFeesCollector","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"isWithdrawableToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"isWithdrawableTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawCollectedFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowlistToken(address)":"de0b27c9","denylistToken(address)":"194d810f","getDenylistedToken(uint256)":"fd3a0cdd","getDenylistedTokensLength()":"8dd26fc6","getProtocolFeesCollector()":"d2946c2b","isWithdrawableToken(address)":"cdf0e934","isWithdrawableTokens(address[])":"a21dfaee","withdrawCollectedFees(address[],uint256[],address)":"6daefab6"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAllowlisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDenylisted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"allowlistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"denylistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getDenylistedToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDenylistedTokensLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeesCollector\",\"outputs\":[{\"internalType\":\"contract IProtocolFeesCollector\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isWithdrawableToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"isWithdrawableTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawCollectedFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Balancer Labs\",\"kind\":\"dev\",\"methods\":{\"isWithdrawableTokens(address[])\":{\"details\":\"Returns false if any token is denylisted.\"},\"withdrawCollectedFees(address[],uint256[],address)\":{\"details\":\"Reverts if attempting to withdraw a denylisted token.\",\"params\":{\"amounts\":\"- an array of the amounts of each token to withdraw.\",\"recipient\":\"- the address to which to send the withdrawn tokens.\",\"tokens\":\"- an array of token addresses to withdraw.\"}}},\"title\":\"Protocol Fees Withdrawer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowlistToken(address)\":{\"notice\":\"Marks the provided token as eligible for withdrawal from the Protocol Fee Collector\"},\"denylistToken(address)\":{\"notice\":\"Marks the provided token as ineligible for withdrawal from the Protocol Fee Collector\"},\"getDenylistedToken(uint256)\":{\"notice\":\"Returns the denylisted token at the given `index`.\"},\"getDenylistedTokensLength()\":{\"notice\":\"Returns the number of denylisted tokens.\"},\"getProtocolFeesCollector()\":{\"notice\":\"Returns the address of the Protocol Fee Collector.\"},\"isWithdrawableToken(address)\":{\"notice\":\"Returns whether the provided token may be withdrawn from the Protocol Fee Collector\"},\"isWithdrawableTokens(address[])\":{\"notice\":\"Returns whether the provided array of tokens may be withdrawn from the Protocol Fee Collector\"},\"withdrawCollectedFees(address[],uint256[],address)\":{\"notice\":\"Withdraws fees from the Protocol Fee Collector.\"}},\"notice\":\"Safety layer around the Protocol Fees Collector which allows withdrawals of specific tokens to be blocked. This is useful for the case in where tokens that shouldn't be distributed are unexpectedly paid into the Protocol Fees Collector.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\":\"IProtocolFeesWithdrawer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\":{\"keccak256\":\"0x7adb9c585633ebdc50dfae87e37e5225ac577daccc8f15f8974d3b6f60cb0378\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dee1825fedae9b6a4abe5c22c41ac17231f9a0178c9bcf50d56a9a3c9c4cda0f\",\"dweb:/ipfs/QmS5JmGd3AzdhdVV1JMQWbT4EkfEQYdxXygLeC5bU8awnf\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol":{"IStaticATokenLM":{"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":[],"name":"ASSET","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ATOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"INCENTIVES_CONTROLLER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LENDING_POOL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"REWARD_TOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"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":"amount","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":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bool","name":"forceUpdate","type":"bool"}],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bool","name":"forceUpdate","type":"bool"}],"name":"claimRewardsOnBehalf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"forceUpdate","type":"bool"}],"name":"claimRewardsToSelf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"collectAndUpdateRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint16","name":"referralCode","type":"uint16"},{"internalType":"bool","name":"fromUnderlying","type":"bool"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"dynamicBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"dynamicToStaticAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAccRewardsPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getClaimableRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastRewardBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLifetimeRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLifetimeRewardsClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalClaimableRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUnclaimedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"depositor","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint16","name":"referralCode","type":"uint16"},{"internalType":"bool","name":"fromUnderlying","type":"bool"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct IStaticATokenLM.SignatureParams","name":"sigParams","type":"tuple"}],"name":"metaDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"staticAmount","type":"uint256"},{"internalType":"uint256","name":"dynamicAmount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct IStaticATokenLM.SignatureParams","name":"sigParams","type":"tuple"}],"name":"metaWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"staticToDynamicAmount","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"}],"name":"withdrawDynamicAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"ASSET()":"4800d97f","ATOKEN()":"51c0e061","INCENTIVES_CONTROLLER()":"10d0ab22","LENDING_POOL()":"b4dcfc77","REWARD_TOKEN()":"99248ea7","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","claimRewards(address,bool)":"491c011a","claimRewardsOnBehalf(address,address,bool)":"dd05aa12","claimRewardsToSelf(bool)":"45c1ace7","collectAndUpdateRewards()":"3eb2eba6","deposit(address,uint256,uint16,bool)":"2f2cab87","dynamicBalanceOf(address)":"44b68c3f","dynamicToStaticAmount(uint256)":"36a5a6d6","getAccRewardsPerToken()":"a135a55e","getClaimableRewards(address)":"308e401e","getDomainSeparator()":"ed24911d","getLastRewardBlock()":"bf62bee6","getLifetimeRewards()":"b3a59022","getLifetimeRewardsClaimed()":"31a5cfa4","getTotalClaimableRewards()":"7f372cff","getUnclaimedRewards(address)":"69a69e29","metaDeposit(address,address,uint256,uint16,bool,uint256,(uint8,bytes32,bytes32))":"c485852b","metaWithdraw(address,address,uint256,uint256,bool,uint256,(uint8,bytes32,bytes32))":"60266557","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","rate()":"2c4e722e","staticToDynamicAmount(uint256)":"f57d0b40","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(address,uint256,bool)":"ead5d359","withdrawDynamicAmount(address,uint256,bool)":"288587ce"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"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\":[],\"name\":\"ASSET\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ATOKEN\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INCENTIVES_CONTROLLER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LENDING_POOL\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REWARD_TOKEN\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"amount\",\"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\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"forceUpdate\",\"type\":\"bool\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"forceUpdate\",\"type\":\"bool\"}],\"name\":\"claimRewardsOnBehalf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"forceUpdate\",\"type\":\"bool\"}],\"name\":\"claimRewardsToSelf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectAndUpdateRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"dynamicBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"dynamicToStaticAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAccRewardsPerToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getClaimableRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastRewardBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLifetimeRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLifetimeRewardsClaimed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalClaimableRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUnclaimedRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct IStaticATokenLM.SignatureParams\",\"name\":\"sigParams\",\"type\":\"tuple\"}],\"name\":\"metaDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"staticAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dynamicAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct IStaticATokenLM.SignatureParams\",\"name\":\"sigParams\",\"type\":\"tuple\"}],\"name\":\"metaWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"staticToDynamicAmount\",\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"}],\"name\":\"withdrawDynamicAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"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 `amount` 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 amount of tokens owned by `account`.\"},\"claimRewards(address,bool)\":{\"params\":{\"forceUpdate\":\"Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`\",\"receiver\":\"The address to receive the rewards\"}},\"claimRewardsOnBehalf(address,address,bool)\":{\"details\":\"Only callable by if sender is onBehalfOf or sender is approved claimer\",\"params\":{\"forceUpdate\":\"Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`\",\"onBehalfOf\":\"The address to claim on behalf of\",\"receiver\":\"The address to receive the rewards\"}},\"claimRewardsToSelf(bool)\":{\"params\":{\"forceUpdate\":\"Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`\"}},\"deposit(address,uint256,uint16,bool)\":{\"params\":{\"amount\":\"The amount of underlying `ASSET` to deposit (e.g. deposit of 100 USDC)\",\"fromUnderlying\":\"bool - `true` if the msg.sender comes with underlying tokens (e.g. USDC) - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\",\"recipient\":\"The address that will receive the static aTokens\",\"referralCode\":\"Code used to register the integrator originating the operation, for potential rewards. 0 if the action is executed directly by the user, without any middle-man\"},\"returns\":{\"_0\":\"uint256 The amount of StaticAToken minted, static balance*\"}},\"dynamicBalanceOf(address)\":{\"params\":{\"account\":\"The address of the user\"},\"returns\":{\"_0\":\"uint256 The aToken balance*\"}},\"dynamicToStaticAmount(uint256)\":{\"params\":{\"amount\":\"The amount to convert from\"},\"returns\":{\"_0\":\"uint256 The static (scaled) amount*\"}},\"getClaimableRewards(address)\":{\"params\":{\"user\":\"The address of the user\"},\"returns\":{\"_0\":\"The claimable amount of rewards in WAD\"}},\"getDomainSeparator()\":{\"returns\":{\"_0\":\"bytes32 The domain separator*\"}},\"getTotalClaimableRewards()\":{\"returns\":{\"_0\":\"The current balance + pending rewards from the `_incentivesController`\"}},\"getUnclaimedRewards(address)\":{\"params\":{\"user\":\"The address of the user\"},\"returns\":{\"_0\":\"The unclaimed amount of rewards in WAD\"}},\"metaDeposit(address,address,uint256,uint16,bool,uint256,(uint8,bytes32,bytes32))\":{\"params\":{\"deadline\":\"The deadline timestamp, type(uint256).max for max deadline\",\"depositor\":\"Address from which the funds to deposit are going to be pulled\",\"fromUnderlying\":\"bool - `true` if the msg.sender comes with underlying tokens (e.g. USDC) - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\",\"recipient\":\"Address that will receive the staticATokens, in the average case, same as the `depositor`\",\"referralCode\":\"Code used to register the integrator originating the operation, for potential rewards. 0 if the action is executed directly by the user, without any middle-man\",\"sigParams\":\"Signature params: v,r,s\",\"value\":\"The amount to deposit\"},\"returns\":{\"_0\":\"uint256 The amount of StaticAToken minted, static balance\"}},\"metaWithdraw(address,address,uint256,uint256,bool,uint256,(uint8,bytes32,bytes32))\":{\"params\":{\"deadline\":\"The deadline timestamp, type(uint256).max for max deadline\",\"dynamicAmount\":\"The amount of underlying/aToken to withdraw. If > 0, `staticAmount` needs to be 0\",\"owner\":\"Address owning the staticATokens\",\"recipient\":\"Address that will receive the underlying withdrawn from Aave\",\"sigParams\":\"Signature params: v,r,s\",\"staticAmount\":\"The amount of staticAToken to withdraw. If > 0, `dynamicAmount` needs to be 0\",\"toUnderlying\":\"bool - `true` for the recipient to get underlying tokens (e.g. USDC) - `false` for the recipient to get aTokens (e.g. aUSDC)\"},\"returns\":{\"_0\":\"amountToBurn: StaticATokens burnt, static balance\",\"_1\":\"amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance\"}},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"deadline\":\"The deadline timestamp, type(uint256).max for max deadline\",\"owner\":\"The owner of the funds\",\"r\":\"Signature param\",\"s\":\"Signature param\",\"spender\":\"The spender\",\"v\":\"Signature param\",\"value\":\"The amount\"}},\"rate()\":{\"returns\":{\"_0\":\"The liquidity index*\"}},\"staticToDynamicAmount(uint256)\":{\"params\":{\"amount\":\"The amount to convert from\"},\"returns\":{\"_0\":\"uint256 The dynamic amount*\"}},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"withdraw(address,uint256,bool)\":{\"params\":{\"amount\":\"The amount to withdraw, in static balance of StaticAToken\",\"recipient\":\"The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\",\"toUnderlying\":\"bool - `true` for the recipient to get underlying tokens (e.g. USDC) - `false` for the recipient to get aTokens (e.g. aUSDC)\"},\"returns\":{\"_0\":\"amountToBurn: StaticATokens burnt, static balance\",\"_1\":\"amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance*\"}},\"withdrawDynamicAmount(address,uint256,bool)\":{\"params\":{\"amount\":\"The amount to withdraw, in dynamic balance of aToken/underlying asset\",\"recipient\":\"The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\",\"toUnderlying\":\"bool - `true` for the recipient to get underlying tokens (e.g. USDC) - `false` for the recipient to get aTokens (e.g. aUSDC)\"},\"returns\":{\"_0\":\"amountToBurn: StaticATokens burnt, static balance\",\"_1\":\"amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance*\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"claimRewards(address,bool)\":{\"notice\":\"Claim rewards and send them to a receiver\"},\"claimRewardsOnBehalf(address,address,bool)\":{\"notice\":\"Claim rewards on behalf of a user and send them to a receiver\"},\"claimRewardsToSelf(bool)\":{\"notice\":\"Claim rewards\"},\"collectAndUpdateRewards()\":{\"notice\":\"Claims rewards from `INCENTIVES_CONTROLLER` and updates internal accounting of rewards.\"},\"deposit(address,uint256,uint16,bool)\":{\"notice\":\"Deposits `ASSET` in the Aave protocol and mints static aTokens to msg.sender\"},\"dynamicBalanceOf(address)\":{\"notice\":\"Utility method to get the current aToken balance of an user, from his staticAToken balance\"},\"dynamicToStaticAmount(uint256)\":{\"notice\":\"Converts an aToken or underlying amount to the what it is denominated on the aToken as scaled balance, function of the principal and the liquidity index\"},\"getClaimableRewards(address)\":{\"notice\":\"Get the total claimable rewards for a user in WAD\"},\"getDomainSeparator()\":{\"notice\":\"Function to return a dynamic domain separator, in order to be compatible with forks changing chainId\"},\"getTotalClaimableRewards()\":{\"notice\":\"Get the total claimable rewards of the contract.\"},\"getUnclaimedRewards(address)\":{\"notice\":\"The unclaimed rewards for a user in WAD\"},\"metaDeposit(address,address,uint256,uint16,bool,uint256,(uint8,bytes32,bytes32))\":{\"notice\":\"Allows to deposit on Aave via meta-transaction https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\"},\"metaWithdraw(address,address,uint256,uint256,bool,uint256,(uint8,bytes32,bytes32))\":{\"notice\":\"Allows to withdraw from Aave via meta-transaction https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Implements the permit function as for https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\"},\"rate()\":{\"notice\":\"Returns the Aave liquidity index of the underlying aToken, denominated rate here as it can be considered as an ever-increasing exchange rate\"},\"staticToDynamicAmount(uint256)\":{\"notice\":\"Converts a static amount (scaled balance on aToken) to the aToken/underlying value, using the current liquidity index on Aave\"},\"withdraw(address,uint256,bool)\":{\"notice\":\"Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\"},\"withdrawDynamicAmount(address,uint256,bool)\":{\"notice\":\"Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\":\"IStaticATokenLM\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\":{\"keccak256\":\"0x82df6d6c71a197051483edc2854de4aff2318d9336647706240af5bc9b70f544\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8f40c60825147183ed5b35d09c16d2eeaf5955168e4a5dd3343fa8869090aa97\",\"dweb:/ipfs/QmY1rD9qjoh6K3T4Bgfo2QFt8jTTJPdY6yV2RkGgDRsq3Z\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol":{"IstETH":{"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":"amount","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":[{"internalType":"address","name":"referral","type":"address"}],"name":"submit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","submit(address)":"a1903eab","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"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\":\"amount\",\"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\":[{\"internalType\":\"address\",\"name\":\"referral\",\"type\":\"address\"}],\"name\":\"submit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"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 `amount` 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 amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` 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\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":\"IstETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x2e5cd2e8ce3f3380853a42af5891f787caa27d4aa5f5de0cd18f2f4ecf085f9c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae8aad1c72dd6ad70d9377d8b025af8ff9648fb99fcac4ed101c3ffe9d74c082\",\"dweb:/ipfs/QmQ5A29nCNj72ckV23cCEANomh5tt5UJkL4938GLYPEn4Q\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol":{"IwstETH":{"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":"amount","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":[{"internalType":"uint256","name":"_wstETHAmount","type":"uint256"}],"name":"getStETHByWstETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stETHAmount","type":"uint256"}],"name":"getWstETHByStETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stETH","outputs":[{"internalType":"contract IstETH","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stEthPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensPerStEth","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_wstETHAmount","type":"uint256"}],"name":"unwrap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stETHAmount","type":"uint256"}],"name":"wrap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getStETHByWstETH(uint256)":"bb2952fc","getWstETHByStETH(uint256)":"b0e38900","stETH()":"c1fe3e48","stEthPerToken()":"035faf82","tokensPerStEth()":"9576a0c8","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","unwrap(uint256)":"de0e9a3e","wrap(uint256)":"ea598cb0"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"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\":\"amount\",\"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\":[{\"internalType\":\"uint256\",\"name\":\"_wstETHAmount\",\"type\":\"uint256\"}],\"name\":\"getStETHByWstETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_stETHAmount\",\"type\":\"uint256\"}],\"name\":\"getWstETHByStETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stETH\",\"outputs\":[{\"internalType\":\"contract IstETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stEthPerToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokensPerStEth\",\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_wstETHAmount\",\"type\":\"uint256\"}],\"name\":\"unwrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_stETHAmount\",\"type\":\"uint256\"}],\"name\":\"wrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"It's an ERC20 token that represents the account's share of the total supply of stETH tokens. WstETH token's balance only changes on transfers, unlike StETH that is also changed when oracles report staking rewards and penalties. It's a \\\"power user\\\" token for DeFi protocols which don't support rebasable tokens. The contract is also a trustless wrapper that accepts stETH tokens and mints wstETH in return. Then the user unwraps, the contract burns user's wstETH and sends user locked stETH in return. The contract provides the staking shortcut: user can send ETH with regular transfer and get wstETH in return. The contract will send ETH to Lido submit method, staking it and wrapping the received stETH.\",\"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 `amount` 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 amount of tokens owned by `account`.\"},\"getStETHByWstETH(uint256)\":{\"params\":{\"_wstETHAmount\":\"amount of wstETH\"},\"returns\":{\"_0\":\"Amount of stETH for a given wstETH amount\"}},\"getWstETHByStETH(uint256)\":{\"params\":{\"_stETHAmount\":\"amount of stETH\"},\"returns\":{\"_0\":\"Amount of wstETH for a given stETH amount\"}},\"stEthPerToken()\":{\"returns\":{\"_0\":\"Amount of stETH for 1 wstETH\"}},\"tokensPerStEth()\":{\"returns\":{\"_0\":\"Amount of wstETH for a 1 stETH\"}},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"unwrap(uint256)\":{\"details\":\"Requirements: - `_wstETHAmount` must be non-zero - msg.sender must have at least `_wstETHAmount` wstETH.\",\"params\":{\"_wstETHAmount\":\"amount of wstETH to uwrap in exchange for stETH\"},\"returns\":{\"_0\":\"Amount of stETH user receives after unwrap\"}},\"wrap(uint256)\":{\"details\":\"Requirements: - `_stETHAmount` must be non-zero - msg.sender must approve at least `_stETHAmount` stETH to this contract. - msg.sender must have at least `_stETHAmount` of stETH. User should first approve _stETHAmount to the WstETH contract\",\"params\":{\"_stETHAmount\":\"amount of stETH to wrap in exchange for wstETH\"},\"returns\":{\"_0\":\"Amount of wstETH user receives after wrap\"}}},\"title\":\"StETH token wrapper with static balances.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getStETHByWstETH(uint256)\":{\"notice\":\"Get amount of stETH for a given amount of wstETH\"},\"getWstETHByStETH(uint256)\":{\"notice\":\"Get amount of wstETH for a given amount of stETH\"},\"stEthPerToken()\":{\"notice\":\"Get amount of wstETH for a one stETH\"},\"tokensPerStEth()\":{\"notice\":\"Get amount of stETH for a one wstETH\"},\"unwrap(uint256)\":{\"notice\":\"Exchanges wstETH to stETH\"},\"wrap(uint256)\":{\"notice\":\"Exchanges stETH to wstETH\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\":\"IwstETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x2e5cd2e8ce3f3380853a42af5891f787caa27d4aa5f5de0cd18f2f4ecf085f9c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae8aad1c72dd6ad70d9377d8b025af8ff9648fb99fcac4ed101c3ffe9d74c082\",\"dweb:/ipfs/QmQ5A29nCNj72ckV23cCEANomh5tt5UJkL4938GLYPEn4Q\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\":{\"keccak256\":\"0x63ab39ba66fa4d4dd481433cb7e38b3f4b4ef70f93849baa4dbfb505b0a32672\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://96117b89d70c2c7d33072f8d86a7193f22015493e568d0e13e9fdb15b7f912bb\",\"dweb:/ipfs/QmahkTXJxVrCozp3ivzEyh562Fnz3z5oetNiy9AmjugoJr\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol":{"IAsset":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"This is an empty interface used to represent either ERC20-conforming token contracts or ETH (using the zero address sentinel value). We're just relying on the fact that `interface` can be used to declare new address-like types. This concept is unrelated to a Pool's Asset Managers.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":\"IAsset\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol":{"IAuthorizer":{"abi":[{"inputs":[{"internalType":"bytes32","name":"actionId","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"where","type":"address"}],"name":"canPerform","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"canPerform(bytes32,address,address)":"9be2a884"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"actionId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"canPerform\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"canPerform(bytes32,address,address)\":{\"details\":\"Returns true if `account` can perform the action described by `actionId` in the contract `where`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":\"IAuthorizer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol":{"IBasePool":{"abi":[{"inputs":[],"name":"getPoolId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getScalingFactors","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"},{"internalType":"uint256","name":"protocolSwapFeePercentage","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"onExitPool","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"internalType":"uint256[]","name":"dueProtocolFeeAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"},{"internalType":"uint256","name":"protocolSwapFeePercentage","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"onJoinPool","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256[]","name":"dueProtocolFeeAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"},{"internalType":"uint256","name":"protocolSwapFeePercentage","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryExit","outputs":[{"internalType":"uint256","name":"bptIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"},{"internalType":"uint256","name":"protocolSwapFeePercentage","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryJoin","outputs":[{"internalType":"uint256","name":"bptOut","type":"uint256"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getPoolId()":"38fff2d0","getScalingFactors()":"1dd746ea","getSwapFeePercentage()":"55c67628","onExitPool(bytes32,address,address,uint256[],uint256,uint256,bytes)":"74f3b009","onJoinPool(bytes32,address,address,uint256[],uint256,uint256,bytes)":"d5c096c4","queryExit(bytes32,address,address,uint256[],uint256,uint256,bytes)":"6028bfd4","queryJoin(bytes32,address,address,uint256[],uint256,uint256,bytes)":"87ec6817"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getPoolId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getScalingFactors\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"onExitPool\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"dueProtocolFeeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"onJoinPool\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"dueProtocolFeeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryExit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryJoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for adding and removing liquidity that all Pool contracts should implement. Note that this is not the complete Pool contract interface, as it is missing the swap hooks. Pool contracts should also inherit from either IGeneralPool or IMinimalSwapInfoPool\",\"kind\":\"dev\",\"methods\":{\"getPoolId()\":{\"details\":\"Returns this Pool's ID, used when interacting with the Vault (to e.g. join the Pool or swap with it).\"},\"getScalingFactors()\":{\"details\":\"Returns the scaling factors of each of the Pool's tokens. This is an implementation detail that is typically not relevant for outside parties, but which might be useful for some types of Pools.\"},\"getSwapFeePercentage()\":{\"details\":\"Returns the current swap fee percentage as a 18 decimal fixed point number, so e.g. 1e17 corresponds to a 10% swap fee.\"},\"onExitPool(bytes32,address,address,uint256[],uint256,uint256,bytes)\":{\"details\":\"Called by the Vault when a user calls `IVault.exitPool` to remove liquidity from this Pool. Returns how many tokens the Vault should deduct from the Pool's balances, as well as the amount of protocol fees the Pool owes to the Vault. The Vault will then take tokens from the Pool's balances and send them to `recipient`, as well as collect the reported amount in protocol fees, which the Pool should calculate based on `protocolSwapFeePercentage`. Protocol fees are charged on exit events to guarantee that users exiting the Pool have paid their share. `sender` is the account performing the exit (typically the pool shareholder), and `recipient` is the account to which the Vault will send the proceeds. `balances` contains the total token balances for each token the Pool registered in the Vault, in the same order that `IVault.getPoolTokens` would return. `lastChangeBlock` is the last block in which *any* of the Pool's registered tokens last changed its total balance. `userData` contains any pool-specific instructions needed to perform the calculations, such as the type of exit (e.g., proportional given an amount of pool shares, single-asset, multi-asset, etc.) Contracts implementing this function should check that the caller is indeed the Vault before performing any state-changing operations, such as burning pool shares.\"},\"onJoinPool(bytes32,address,address,uint256[],uint256,uint256,bytes)\":{\"details\":\"Called by the Vault when a user calls `IVault.joinPool` to add liquidity to this Pool. Returns how many of each registered token the user should provide, as well as the amount of protocol fees the Pool owes to the Vault. The Vault will then take tokens from `sender` and add them to the Pool's balances, as well as collect the reported amount in protocol fees, which the pool should calculate based on `protocolSwapFeePercentage`. Protocol fees are reported and charged on join events so that the Pool is free of debt whenever new users join. `sender` is the account performing the join (from which tokens will be withdrawn), and `recipient` is the account designated to receive any benefits (typically pool shares). `balances` contains the total balances for each token the Pool registered in the Vault, in the same order that `IVault.getPoolTokens` would return. `lastChangeBlock` is the last block in which *any* of the Pool's registered tokens last changed its total balance. `userData` contains any pool-specific instructions needed to perform the calculations, such as the type of join (e.g., proportional given an amount of pool shares, single-asset, multi-asset, etc.) Contracts implementing this function should check that the caller is indeed the Vault before performing any state-changing operations, such as minting pool shares.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol\":\"IBasePool\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0xd36229e6ac86c11d67c77af218720c36a2e44511c84635fd780f1a3b9ac78d75\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://70570fa1ae61157b1fe163c07f559ff42987723ad4971a624d9c3fa7de0c99e8\",\"dweb:/ipfs/QmZ97kZMpg9kypYQHCdGD4xoqs9a6PrEwumU4EWNogpzLh\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol\":{\"keccak256\":\"0x997616af454ac3b56c8377fc913a25c7b282dc95355f6251dd4283c2b6d4805e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://22479024819e8b6a7b19ecd910dd847ec1611924db4aa67070c419ef9aac4f07\",\"dweb:/ipfs/QmbfzphtRmBAB8KgbN2Q4DUqpLo9gEGm5QEUFWXSou1Yt7\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol":{"IFlashLoanRecipient":{"abi":[{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"feeAmounts","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"receiveFlashLoan","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"receiveFlashLoan(address[],uint256[],uint256[],bytes)":"f04f2707"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"feeAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"receiveFlashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"receiveFlashLoan(address[],uint256[],uint256[],bytes)\":{\"details\":\"When `flashLoan` is called on the Vault, it invokes the `receiveFlashLoan` hook on the recipient. At the time of the call, the Vault will have transferred `amounts` for `tokens` to the recipient. Before this call returns, the recipient must have transferred `amounts` plus `feeAmounts` for each token back to the Vault, or else the entire flash loan will revert. `userData` is the same value passed in the `IVault.flashLoan` call.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":\"IFlashLoanRecipient\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol":{"IPoolSwapStructs":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol\":\"IPoolSwapStructs\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol\":{\"keccak256\":\"0x997616af454ac3b56c8377fc913a25c7b282dc95355f6251dd4283c2b6d4805e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://22479024819e8b6a7b19ecd910dd847ec1611924db4aa67070c419ef9aac4f07\",\"dweb:/ipfs/QmbfzphtRmBAB8KgbN2Q4DUqpLo9gEGm5QEUFWXSou1Yt7\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol":{"IProtocolFeesCollector":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newFlashLoanFeePercentage","type":"uint256"}],"name":"FlashLoanFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newSwapFeePercentage","type":"uint256"}],"name":"SwapFeePercentageChanged","type":"event"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"getCollectedFeeAmounts","outputs":[{"internalType":"uint256[]","name":"feeAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFlashLoanFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFlashLoanFeePercentage","type":"uint256"}],"name":"setFlashLoanFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapFeePercentage","type":"uint256"}],"name":"setSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawCollectedFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getAuthorizer()":"aaabadc5","getCollectedFeeAmounts(address[])":"e42abf35","getFlashLoanFeePercentage()":"d877845c","getSwapFeePercentage()":"55c67628","setFlashLoanFeePercentage(uint256)":"6b6b9f69","setSwapFeePercentage(uint256)":"38e9922e","vault()":"fbfa77cf","withdrawCollectedFees(address[],uint256[],address)":"6daefab6"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFlashLoanFeePercentage\",\"type\":\"uint256\"}],\"name\":\"FlashLoanFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"SwapFeePercentageChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"getCollectedFeeAmounts\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"feeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newFlashLoanFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setFlashLoanFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawCollectedFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":\"IProtocolFeesCollector\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol":{"IVault":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"AuthorizerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ExternalBalanceTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IFlashLoanRecipient","name":"recipient","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeAmount","type":"uint256"}],"name":"FlashLoan","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"int256","name":"delta","type":"int256"}],"name":"InternalBalanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":false,"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"indexed":false,"internalType":"int256[]","name":"deltas","type":"int256[]"},{"indexed":false,"internalType":"uint256[]","name":"protocolFeeAmounts","type":"uint256[]"}],"name":"PoolBalanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"assetManager","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"int256","name":"cashDelta","type":"int256"},{"indexed":false,"internalType":"int256","name":"managedDelta","type":"int256"}],"name":"PoolBalanceManaged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"poolAddress","type":"address"},{"indexed":false,"internalType":"enum IVault.PoolSpecialization","name":"specialization","type":"uint8"}],"name":"PoolRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"relayer","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"RelayerApprovalChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"TokensDeregistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"indexed":false,"internalType":"address[]","name":"assetManagers","type":"address[]"}],"name":"TokensRegistered","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract IWETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"int256[]","name":"limits","type":"int256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"batchSwap","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"deregisterTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"}],"name":"exitPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IFlashLoanRecipient","name":"recipient","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"flashLoan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"getInternalBalance","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPausedState","outputs":[{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"uint256","name":"pauseWindowEndTime","type":"uint256"},{"internalType":"uint256","name":"bufferPeriodEndTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"getPool","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"enum IVault.PoolSpecialization","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getPoolTokenInfo","outputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"managed","type":"uint256"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"},{"internalType":"address","name":"assetManager","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"getPoolTokens","outputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeesCollector","outputs":[{"internalType":"contract IProtocolFeesCollector","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"relayer","type":"address"}],"name":"hasApprovedRelayer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"}],"name":"joinPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"enum IVault.PoolBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IVault.PoolBalanceOp[]","name":"ops","type":"tuple[]"}],"name":"managePoolBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum IVault.UserBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"}],"internalType":"struct IVault.UserBalanceOp[]","name":"ops","type":"tuple[]"}],"name":"manageUserBalance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"}],"name":"queryBatchSwap","outputs":[{"internalType":"int256[]","name":"assetDeltas","type":"int256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IVault.PoolSpecialization","name":"specialization","type":"uint8"}],"name":"registerPool","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"assetManagers","type":"address[]"}],"name":"registerTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"setAuthorizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"relayer","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setRelayerApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"WETH()":"ad5c4648","batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256)":"945bcec9","deregisterTokens(bytes32,address[])":"7d3aeb96","exitPool(bytes32,address,address,(address[],uint256[],bytes,bool))":"8bdb3913","flashLoan(address,address[],uint256[],bytes)":"5c38449e","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getDomainSeparator()":"ed24911d","getInternalBalance(address,address[])":"0f5a6efa","getNextNonce(address)":"90193b7c","getPausedState()":"1c0de051","getPool(bytes32)":"f6c00927","getPoolTokenInfo(bytes32,address)":"b05f8e48","getPoolTokens(bytes32)":"f94d4668","getProtocolFeesCollector()":"d2946c2b","hasApprovedRelayer(address,address)":"fec90d72","joinPool(bytes32,address,address,(address[],uint256[],bytes,bool))":"b95cac28","managePoolBalance((uint8,bytes32,address,uint256)[])":"e6c46092","manageUserBalance((uint8,address,uint256,address,address)[])":"0e8e3e84","queryBatchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool))":"f84d066e","registerPool(uint8)":"09b2760f","registerTokens(bytes32,address[],address[])":"66a9c7d2","setAuthorizer(address)":"058a628f","setPaused(bool)":"16c38b3c","setRelayerApproval(address,address,bool)":"fa6e671d","swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256)":"52bbbe29"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"AuthorizerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ExternalBalanceTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IFlashLoanRecipient\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"InternalBalanceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"deltas\",\"type\":\"int256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"protocolFeeAmounts\",\"type\":\"uint256[]\"}],\"name\":\"PoolBalanceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assetManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"cashDelta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"managedDelta\",\"type\":\"int256\"}],\"name\":\"PoolBalanceManaged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"poolAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IVault.PoolSpecialization\",\"name\":\"specialization\",\"type\":\"uint8\"}],\"name\":\"PoolRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"RelayerApprovalChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"TokensDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"assetManagers\",\"type\":\"address[]\"}],\"name\":\"TokensRegistered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"contract IWETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"int256[]\",\"name\":\"limits\",\"type\":\"int256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"batchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"deregisterTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IFlashLoanRecipient\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"getInternalBalance\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bufferPeriodEndTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"enum IVault.PoolSpecialization\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPoolTokenInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"managed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"assetManager\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getPoolTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeesCollector\",\"outputs\":[{\"internalType\":\"contract IProtocolFeesCollector\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"hasApprovedRelayer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"joinPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.PoolBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IVault.PoolBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"}],\"name\":\"managePoolBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.UserBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct IVault.UserBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"}],\"name\":\"manageUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"}],\"name\":\"queryBatchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"assetDeltas\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.PoolSpecialization\",\"name\":\"specialization\",\"type\":\"uint8\"}],\"name\":\"registerPool\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"assetManagers\",\"type\":\"address[]\"}],\"name\":\"registerTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"setAuthorizer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"setPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setRelayerApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Full external interface for the Vault core contract - no external or public methods exist in the contract that don't override one of these declarations.\",\"events\":{\"AuthorizerChanged(address)\":{\"details\":\"Emitted when a new authorizer is set by `setAuthorizer`.\"},\"ExternalBalanceTransfer(address,address,address,uint256)\":{\"details\":\"Emitted when a user's Vault ERC20 allowance is used by the Vault to transfer tokens to an external account.\"},\"FlashLoan(address,address,uint256,uint256)\":{\"details\":\"Emitted for each individual flash loan performed by `flashLoan`.\"},\"InternalBalanceChanged(address,address,int256)\":{\"details\":\"Emitted when a user's Internal Balance changes, either from calls to `manageUserBalance`, or through interacting with Pools using Internal Balance. Because Internal Balance works exclusively with ERC20 tokens, ETH deposits and withdrawals will use the WETH address.\"},\"PoolBalanceChanged(bytes32,address,address[],int256[],uint256[])\":{\"details\":\"Emitted when a user joins or exits a Pool by calling `joinPool` or `exitPool`, respectively.\"},\"PoolBalanceManaged(bytes32,address,address,int256,int256)\":{\"details\":\"Emitted when a Pool's token Asset Manager alters its balance via `managePoolBalance`.\"},\"PoolRegistered(bytes32,address,uint8)\":{\"details\":\"Emitted when a Pool is registered by calling `registerPool`.\"},\"RelayerApprovalChanged(address,address,bool)\":{\"details\":\"Emitted every time a relayer is approved or disapproved by `setRelayerApproval`.\"},\"Swap(bytes32,address,address,uint256,uint256)\":{\"details\":\"Emitted for each individual swap performed by `swap` or `batchSwap`.\"},\"TokensDeregistered(bytes32,address[])\":{\"details\":\"Emitted when a Pool deregisters tokens by calling `deregisterTokens`.\"},\"TokensRegistered(bytes32,address[],address[])\":{\"details\":\"Emitted when a Pool registers tokens by calling `registerTokens`.\"}},\"kind\":\"dev\",\"methods\":{\"WETH()\":{\"details\":\"Returns the Vault's WETH instance.\"},\"batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256)\":{\"details\":\"Performs a series of swaps with one or multiple Pools. In each individual swap, the caller determines either the amount of tokens sent to or received from the Pool, depending on the `kind` value. Returns an array with the net Vault asset balance deltas. Positive amounts represent tokens (or ETH) sent to the Vault, and negative amounts represent tokens (or ETH) sent by the Vault. Each delta corresponds to the asset at the same index in the `assets` array. Swaps are executed sequentially, in the order specified by the `swaps` array. Each array element describes a Pool, the token to be sent to this Pool, the token to receive from it, and an amount that is either `amountIn` or `amountOut` depending on the swap kind. Multihop swaps can be executed by passing an `amount` value of zero for a swap. This will cause the amount in/out of the previous swap to be used as the amount in for the current one. In a 'given in' swap, 'tokenIn' must equal the previous swap's `tokenOut`. For a 'given out' swap, `tokenOut` must equal the previous swap's `tokenIn`. The `assets` array contains the addresses of all assets involved in the swaps. These are either token addresses, or the IAsset sentinel value for ETH (the zero address). Each entry in the `swaps` array specifies tokens in and out by referencing an index in `assets`. Note that Pools never interact with ETH directly: it will be wrapped to or unwrapped from WETH by the Vault. Internal Balance usage, sender, and recipient are determined by the `funds` struct. The `limits` array specifies the minimum or maximum amount of each token the vault is allowed to transfer. `batchSwap` can be used to make a single swap, like `swap` does, but doing so requires more gas than the equivalent `swap` call. Emits `Swap` events.\"},\"deregisterTokens(bytes32,address[])\":{\"details\":\"Deregisters `tokens` for the `poolId` Pool. Must be called by the Pool's contract. Only registered tokens (via `registerTokens`) can be deregistered. Additionally, they must have zero total balance. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens must be deregistered in the same `deregisterTokens` call. A deregistered token can be re-registered later on, possibly with a different Asset Manager. Emits a `TokensDeregistered` event.\"},\"exitPool(bytes32,address,address,(address[],uint256[],bytes,bool))\":{\"details\":\"Called by users to exit a Pool, which transfers tokens from the Pool's balance to `recipient`. This will trigger custom Pool behavior, which will typically ask for something in return from `sender` - often tokenized Pool shares. The amount of tokens that can be withdrawn is limited by the Pool's `cash` balance (see `getPoolTokenInfo`). If the caller is not `sender`, it must be an authorized relayer for them. The `tokens` and `minAmountsOut` arrays must have the same length, and each entry in these indicates the minimum token amount to receive for each token contract. The amounts to send are decided by the Pool and not the Vault: it just enforces these minimums. If exiting a Pool that holds WETH, it is possible to receive ETH directly: the Vault will do the unwrapping. To enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the WETH address. Note that it is not possible to combine ETH and WETH in the same exit. `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when interacting with Pools that register and deregister tokens frequently. If receiving ETH however, the array must be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final `assets` array might not be sorted. Pools with no registered tokens cannot be exited. If `toInternalBalance` is true, the tokens will be deposited to `recipient`'s Internal Balance. Otherwise, an ERC20 transfer will be performed. Note that ETH cannot be deposited to Internal Balance: attempting to do so will trigger a revert. `minAmountsOut` is the minimum amount of tokens the user expects to get out of the Pool, for each token in the `tokens` array. This array must match the Pool's registered tokens. This causes the Vault to call the `IBasePool.onExitPool` hook on the Pool's contract, where Pools implement their own custom logic. This typically requires additional information from the user (such as the expected number of Pool shares to return). This can be encoded in the `userData` argument, which is ignored by the Vault and passed directly to the Pool's contract. Emits a `PoolBalanceChanged` event.\"},\"flashLoan(address,address[],uint256[],bytes)\":{\"details\":\"Performs a 'flash loan', sending tokens to `recipient`, executing the `receiveFlashLoan` hook on it, and then reverting unless the tokens plus a proportional protocol fee have been returned. The `tokens` and `amounts` arrays must have the same length, and each entry in these indicates the loan amount for each token contract. `tokens` must be sorted in ascending order. The 'userData' field is ignored by the Vault, and forwarded as-is to `recipient` as part of the `receiveFlashLoan` call. Emits `FlashLoan` events.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getAuthorizer()\":{\"details\":\"Returns the Vault's Authorizer.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"getInternalBalance(address,address[])\":{\"details\":\"Returns `user`'s Internal Balance for a set of tokens.\"},\"getNextNonce(address)\":{\"details\":\"Returns the next nonce used by an address to sign messages.\"},\"getPausedState()\":{\"details\":\"Returns the current paused state.\"},\"getPool(bytes32)\":{\"details\":\"Returns a Pool's contract address and specialization setting.\"},\"getPoolTokenInfo(bytes32,address)\":{\"details\":\"Returns detailed information for a Pool's registered token. `cash` is the number of tokens the Vault currently holds for the Pool. `managed` is the number of tokens withdrawn and held outside the Vault by the Pool's token Asset Manager. The Pool's total balance for `token` equals the sum of `cash` and `managed`. Internally, `cash` and `managed` are stored using 112 bits. No action can ever cause a Pool's token `cash`, `managed` or `total` balance to be greater than 2^112 - 1. `lastChangeBlock` is the number of the block in which `token`'s total balance was last modified (via either a join, exit, swap, or Asset Manager update). This value is useful to avoid so-called 'sandwich attacks', for example when developing price oracles. A change of zero (e.g. caused by a swap with amount zero) is considered a change for this purpose, and will update `lastChangeBlock`. `assetManager` is the Pool's token Asset Manager.\"},\"getPoolTokens(bytes32)\":{\"details\":\"Returns a Pool's registered tokens, the total balance for each, and the latest block when *any* of the tokens' `balances` changed. The order of the `tokens` array is the same order that will be used in `joinPool`, `exitPool`, as well as in all Pool hooks (where applicable). Calls to `registerTokens` and `deregisterTokens` may change this order. If a Pool only registers tokens once, and these are sorted in ascending order, they will be stored in the same order as passed to `registerTokens`. Total balances include both tokens held by the Vault and those withdrawn by the Pool's Asset Managers. These are the amounts used by joins, exits and swaps. For a detailed breakdown of token balances, use `getPoolTokenInfo` instead.\"},\"getProtocolFeesCollector()\":{\"details\":\"Returns the current protocol fee module.\"},\"hasApprovedRelayer(address,address)\":{\"details\":\"Returns true if `user` has approved `relayer` to act as a relayer for them.\"},\"joinPool(bytes32,address,address,(address[],uint256[],bytes,bool))\":{\"details\":\"Called by users to join a Pool, which transfers tokens from `sender` into the Pool's balance. This will trigger custom Pool behavior, which will typically grant something in return to `recipient` - often tokenized Pool shares. If the caller is not `sender`, it must be an authorized relayer for them. The `assets` and `maxAmountsIn` arrays must have the same length, and each entry indicates the maximum amount to send for each asset. The amounts to send are decided by the Pool and not the Vault: it just enforces these maximums. If joining a Pool that holds WETH, it is possible to send ETH directly: the Vault will do the wrapping. To enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the WETH address. Note that it is not possible to combine ETH and WETH in the same join. Any excess ETH will be sent back to the caller (not the sender, which is important for relayers). `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when interacting with Pools that register and deregister tokens frequently. If sending ETH however, the array must be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final `assets` array might not be sorted. Pools with no registered tokens cannot be joined. If `fromInternalBalance` is true, the caller's Internal Balance will be preferred: ERC20 transfers will only be made for the difference between the requested amount and Internal Balance (if any). Note that ETH cannot be withdrawn from Internal Balance: attempting to do so will trigger a revert. This causes the Vault to call the `IBasePool.onJoinPool` hook on the Pool's contract, where Pools implement their own custom logic. This typically requires additional information from the user (such as the expected number of Pool shares). This can be encoded in the `userData` argument, which is ignored by the Vault and passed directly to the Pool's contract, as is `recipient`. Emits a `PoolBalanceChanged` event.\"},\"managePoolBalance((uint8,bytes32,address,uint256)[])\":{\"details\":\"Performs a set of Pool balance operations, which may be either withdrawals, deposits or updates. Pool Balance management features batching, which means a single contract call can be used to perform multiple operations of different kinds, with different Pools and tokens, at once. For each operation, the caller must be registered as the Asset Manager for `token` in `poolId`.\"},\"manageUserBalance((uint8,address,uint256,address,address)[])\":{\"details\":\"Performs a set of user balance operations, which involve Internal Balance (deposit, withdraw or transfer) and plain ERC20 transfers using the Vault's allowance. This last feature is particularly useful for relayers, as it lets integrators reuse a user's Vault allowance. For each operation, if the caller is not `sender`, it must be an authorized relayer for them.\"},\"queryBatchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool))\":{\"details\":\"Simulates a call to `batchSwap`, returning an array of Vault asset deltas. Calls to `swap` cannot be simulated directly, but an equivalent `batchSwap` call can and will yield the exact same result. Each element in the array corresponds to the asset at the same index, and indicates the number of tokens (or ETH) the Vault would take from the sender (if positive) or send to the recipient (if negative). The arguments it receives are the same that an equivalent `batchSwap` call would receive. Unlike `batchSwap`, this function performs no checks on the sender or recipient field in the `funds` struct. This makes it suitable to be called by off-chain applications via eth_call without needing to hold tokens, approve them for the Vault, or even know a user's address. Note that this function is not 'view' (due to implementation details): the client code must explicitly execute eth_call instead of eth_sendTransaction.\"},\"registerPool(uint8)\":{\"details\":\"Registers the caller account as a Pool with a given specialization setting. Returns the Pool's ID, which is used in all Pool-related functions. Pools cannot be deregistered, nor can the Pool's specialization be changed. The caller is expected to be a smart contract that implements either `IGeneralPool` or `IMinimalSwapInfoPool`, depending on the chosen specialization setting. This contract is known as the Pool's contract. Note that the same contract may register itself as multiple Pools with unique Pool IDs, or in other words, multiple Pools may share the same contract. Emits a `PoolRegistered` event.\"},\"registerTokens(bytes32,address[],address[])\":{\"details\":\"Registers `tokens` for the `poolId` Pool. Must be called by the Pool's contract. Pools can only interact with tokens they have registered. Users join a Pool by transferring registered tokens, exit by receiving registered tokens, and can only swap registered tokens. Each token can only be registered once. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens must be registered in the same `registerTokens` call, and they must be sorted in ascending order. The `tokens` and `assetManagers` arrays must have the same length, and each entry in these indicates the Asset Manager for the corresponding token. Asset Managers can manage a Pool's tokens via `managePoolBalance`, depositing and withdrawing them directly, and can even set their balance to arbitrary amounts. They are therefore expected to be highly secured smart contracts with sound design principles, and the decision to register an Asset Manager should not be made lightly. Pools can choose not to assign an Asset Manager to a given token by passing in the zero address. Once an Asset Manager is set, it cannot be changed except by deregistering the associated token and registering again with a different Asset Manager. Emits a `TokensRegistered` event.\"},\"setAuthorizer(address)\":{\"details\":\"Sets a new Authorizer for the Vault. The caller must be allowed by the current Authorizer to do this. Emits an `AuthorizerChanged` event.\"},\"setPaused(bool)\":{\"details\":\"Safety mechanism to pause most Vault operations in the event of an emergency - typically detection of an error in some part of the system. The Vault can only be paused during an initial time period, after which pausing is forever disabled. While the contract is paused, the following features are disabled: - depositing and transferring internal balance - transferring external balance (using the Vault's allowance) - swaps - joining Pools - Asset Manager interactions Internal Balance can still be withdrawn, and Pools exited.\"},\"setRelayerApproval(address,address,bool)\":{\"details\":\"Allows `relayer` to act as a relayer for `sender` if `approved` is true, and disallows it otherwise. Emits a `RelayerApprovalChanged` event.\"},\"swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256)\":{\"details\":\"Performs a swap with a single Pool. If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens taken from the Pool, which must be greater than or equal to `limit`. If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens sent to the Pool, which must be less than or equal to `limit`. Internal Balance usage and the recipient are determined by the `funds` struct. Emits a `Swap` event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":\"IVault\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol":{"Authentication":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Building block for performing access control on external functions. This contract is used via the `authenticate` modifier (or the `_authenticateCaller` function), which can be applied to external functions to only make them callable by authorized accounts. Derived contracts must implement the `_canPerform` function, which holds the actual access control logic.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"The main purpose of the `actionIdDisambiguator` is to prevent accidental function selector collisions in multi contract systems. There are two main uses for it: - if the contract is a singleton, any unique identifier can be used to make the associated action identifiers unique. The contract's own address is a good option. - if the contract belongs to a family that shares action identifiers for the same functions, an identifier shared by the entire family (and no other contract) should be used instead.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":\"Authentication\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol":{"EOASignaturesValidator":{"abi":[{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Utility for signing Solidity function calls.\",\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":\"EOASignaturesValidator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol":{"InputHelpers":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122034d56b3213956892dcb5238399528420fdc0b449fe4a87c763ec281d4369904864736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLVALUE 0xD5 PUSH12 0x3213956892DCB52383995284 KECCAK256 REVERT 0xC0 0xB4 0x49 INVALID 0x4A DUP8 0xC7 PUSH4 0xEC281D43 PUSH10 0x904864736F6C63430007 ADD STOP CALLER ","sourceMap":"893:1008:42:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122034d56b3213956892dcb5238399528420fdc0b449fe4a87c763ec281d4369904864736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLVALUE 0xD5 PUSH12 0x3213956892DCB52383995284 KECCAK256 REVERT 0xC0 0xB4 0x49 INVALID 0x4A DUP8 0xC7 PUSH4 0xEC281D43 PUSH10 0x904864736F6C63430007 ADD STOP CALLER ","sourceMap":"893:1008:42:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":\"InputHelpers\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol":{"SingletonAuthentication":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getVault()":"8d928af8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":\"SingletonAuthentication\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0x1e5bca6b4fb897adc2458f65aa7abed8499dcf146ac5872c62544d91516867cb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faa81254fe029b7ccd05635d6919da30bcb2114026996d10f6b51fc0e1f5b850\",\"dweb:/ipfs/Qmax3d2kq51xjt6hjYgskuXSrsB3fBZ4LAxBPRDDzbg8XD\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0x6c48b193602f6d6407e8fca3389fb32264a91f1de8ec33db209694e3bf9d0d13\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1fa358f1537907cdd9f6b176f5a1effbbe9925429634038e9c533493ed824cab\",\"dweb:/ipfs/QmW1EcMLkMFuDKrPwWJ2qhBkmVzAUTVEMP75kw7D8XTjJf\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol":{"VaultHelpers":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ca00420f504e5dbc6487051df0244001b1bc4c2e8573c1326e1532d1298826cb64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA STOP TIMESTAMP 0xF POP 0x4E 0x5D 0xBC PUSH5 0x87051DF024 BLOCKHASH ADD 0xB1 0xBC 0x4C 0x2E DUP6 PUSH20 0xC1326E1532D1298826CB64736F6C634300070100 CALLER ","sourceMap":"713:497:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ca00420f504e5dbc6487051df0244001b1bc4c2e8573c1326e1532d1298826cb64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA STOP TIMESTAMP 0xF POP 0x4E 0x5D 0xBC PUSH5 0x87051DF024 BLOCKHASH ADD 0xB1 0xBC 0x4C 0x2E DUP6 PUSH20 0xC1326E1532D1298826CB64736F6C634300070100 CALLER ","sourceMap":"713:497:44:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\":\"VaultHelpers\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\":{\"keccak256\":\"0xe34a73f883e96c7fef1750edc94b7940f0ac0fd3b43feae13cb7cde0da130c66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://027cf01075479e0a51f17678431e215d17f23773c5cb66c59ddaa6d052f5cbda\",\"dweb:/ipfs/QmPFaTfNLoKkufU6n9Q8n1k2R2WCT1vTRosNXJS4sm8WxQ\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol":{"FixedPoint":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206a6fabeafd4aa44938f66364037555e3b41b9e910e85b0f70a35d4611990400e64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH11 0x6FABEAFD4AA44938F66364 SUB PUSH22 0x55E3B41B9E910E85B0F70A35D4611990400E64736F6C PUSH4 0x43000701 STOP CALLER ","sourceMap":"888:5039:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206a6fabeafd4aa44938f66364037555e3b41b9e910e85b0f70a35d4611990400e64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH11 0x6FABEAFD4AA44938F66364 SUB PUSH22 0x55E3B41B9E910E85B0F70A35D4611990400E64736F6C PUSH4 0x43000701 STOP CALLER ","sourceMap":"888:5039:45:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":\"FixedPoint\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x1ac831deb4f3dcea6c5f67a2bc83d49a9a7434029a4d6cc386b086a7f8fce369\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://492a6ea2320206e8956c15ebf326de8dbba3c3869014d7de4959bdb856ecd892\",\"dweb:/ipfs/QmSuPXCvQJyTe2YbSE9sgTv64nMuoZrHH7Y2LPG7cVbJG7\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol":{"LogExpMath":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b5a935ecc0b1e22372a0ecda546b86c990000cca0d872801318da0f645e21b9964736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 0xA9 CALLDATALOAD 0xEC 0xC0 0xB1 0xE2 0x23 PUSH19 0xA0ECDA546B86C990000CCA0D872801318DA0F6 GASLIMIT 0xE2 SHL SWAP10 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1681:19465:46:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b5a935ecc0b1e22372a0ecda546b86c990000cca0d872801318da0f645e21b9964736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 0xA9 CALLDATALOAD 0xEC 0xC0 0xB1 0xE2 0x23 PUSH19 0xA0ECDA546B86C990000CCA0D872801318DA0F6 GASLIMIT 0xE2 SHL SWAP10 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1681:19465:46:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Fernando Martinelli - @fernandomartinelliSergio Yuhjtman - @sergioyuhjtmanDaniel Fernandez - @dmf7z\",\"details\":\"Exponentiation and logarithm functions for 18 decimal fixed point numbers (both base and exponent/argument). Exponentiation and logarithm with arbitrary bases (x^y and log_x(y)) are implemented by conversion to natural exponentiation and logarithm (where the base is Euler's number).\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":\"LogExpMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol":{"Math":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206e3ae64bf7fbb0d97fbe0224e902b3f9daccfb66916b50372aa532db1374f1ea64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x3AE64BF7FBB0D97FBE0224E902B3F9 0xDA 0xCC 0xFB PUSH7 0x916B50372AA532 0xDB SGT PUSH21 0xF1EA64736F6C634300070100330000000000000000 ","sourceMap":"290:2500:47:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206e3ae64bf7fbb0d97fbe0224e902b3f9daccfb66916b50372aa532db1374f1ea64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x3AE64BF7FBB0D97FBE0224E902B3F9 0xDA 0xCC 0xFB PUSH7 0x916B50372AA532 0xDB SGT PUSH21 0xF1EA64736F6C634300070100330000000000000000 ","sourceMap":"290:2500:47:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. Adapted from OpenZeppelin's SafeMath library.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":\"Math\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xa50a6030616fb98d27463df96d3bd9386c157ecae82c7a71be7e0b7ba778d02f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51dbb7eeb98561aaf6cf6b48825a64a725f5d1d63cfd888711c4cb1468f52fc4\",\"dweb:/ipfs/Qmc2o8dUCBuu8PxJPrPufHmoZ6DGdMPoaXcruUqr3WuCLA\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol":{"Address":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202dcf5b5cfd5751906f521f7befcb3bc1fa9401a1b4e420db58d3bf8cf83f24e664736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D 0xCF JUMPDEST 0x5C REVERT JUMPI MLOAD SWAP1 PUSH16 0x521F7BEFCB3BC1FA9401A1B4E420DB58 0xD3 0xBF DUP13 0xF8 EXTCODEHASH 0x24 0xE6 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"439:5334:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202dcf5b5cfd5751906f521f7befcb3bc1fa9401a1b4e420db58d3bf8cf83f24e664736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D 0xCF JUMPDEST 0x5C REVERT JUMPI MLOAD SWAP1 PUSH16 0x521F7BEFCB3BC1FA9401A1B4E420DB58 0xD3 0xBF DUP13 0xF8 EXTCODEHASH 0x24 0xE6 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"439:5334:48:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":\"Address\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol":{"EIP712":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in their contracts using a combination of `abi.encode` and `keccak256`. This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the domain separator and parameter caches. The meaning of `name` and `version` is specified in https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]: - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. - `version`: the current major version of the signing domain. NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart contract upgrade].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":\"EIP712\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"amount","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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051610b0c380380610b0c8339818101604052604081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b90830190602082018581111561006857600080fd5b825164010000000081118282018810171561008257600080fd5b82525081516020918201929091019080838360005b838110156100af578181015183820152602001610097565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156100ff57600080fd5b90830190602082018581111561011457600080fd5b825164010000000081118282018810171561012e57600080fd5b82525081516020918201929091019080838360005b8381101561015b578181015183820152602001610143565b50505050905090810190601f1680156101885780820380516001836020036101000a031916815260200191505b50604052505082516101a2915060039060208501906101cb565b5080516101b69060049060208401906101cb565b50506005805460ff191660121790555061025e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061020c57805160ff1916838001178555610239565b82800160010185558215610239579182015b8281111561023957825182559160200191906001019061021e565b50610245929150610249565b5090565b5b80821115610245576000815560010161024a565b61089f8061026d6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a06103fe565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610404565b6101fd610465565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561046e565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104b1565b6100d66104d9565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610558565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561059e565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166105ab565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103f53384846105e3565b50600192915050565b60025490565b6000610411848484610652565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461045b918691610456908661019e61077b565b6105e3565b5060019392505050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f59185906104569086610791565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f5918590610456908661019f61077b565b60006103f5338484610652565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b61067673ffffffffffffffffffffffffffffffffffffffff841615156101986107aa565b61069a73ffffffffffffffffffffffffffffffffffffffff831615156101996107aa565b6106a58383836107bc565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020546106d890826101a061077b565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107149082610791565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061078a84841115836107aa565b5050900390565b60008282016107a384821015836107aa565b9392505050565b816107b8576107b8816107c1565b5050565b505050565b6107eb817f42414c00000000000000000000000000000000000000000000000000000000006107ee565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220adfee3e4a53bb381ea6454054291caf3ccf884fd1de357eedd1e0665b338a43e64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xB0C CODESIZE SUB DUP1 PUSH2 0xB0C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x97 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x143 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x188 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP DUP3 MLOAD PUSH2 0x1A2 SWAP2 POP PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x1CB JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x1B6 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1CB JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP PUSH2 0x25E JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x20C JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x239 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x239 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x239 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x21E JUMP JUMPDEST POP PUSH2 0x245 SWAP3 SWAP2 POP PUSH2 0x249 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x245 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x24A JUMP JUMPDEST PUSH2 0x89F DUP1 PUSH2 0x26D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F9 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x27F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F5 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x3FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x404 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x465 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x46E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4B1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x558 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x59E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5AB JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3C1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x411 DUP5 DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x45B SWAP2 DUP7 SWAP2 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19E PUSH2 0x77B JUMP JUMPDEST PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19F PUSH2 0x77B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x676 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x69A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x6A5 DUP4 DUP4 DUP4 PUSH2 0x7BC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x6D8 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0x77B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x714 SWAP1 DUP3 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78A DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x7A3 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x7B8 JUMPI PUSH2 0x7B8 DUP2 PUSH2 0x7C1 JUMP JUMPDEST POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x7EB DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x7EE JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD INVALID 0xE3 0xE4 0xA5 EXTCODESIZE 0xB3 DUP2 0xEA PUSH5 0x54054291CA RETURN 0xCC 0xF8 DUP5 REVERT SAR 0xE3 JUMPI 0xEE 0xDD 0x1E MOD PUSH6 0xB338A43E6473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"1427:10003:50:-:0;;;2052:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2052:137:50;;;;;;;;;;-1:-1:-1;2052:137:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2052:137:50;;;;;;;;;;-1:-1:-1;2052:137:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2052:137:50;;-1:-1:-1;;2118:13:50;;;;-1:-1:-1;2118:5:50;;:13;;;;;:::i;:::-;-1:-1:-1;2141:17:50;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:50;:14;;-1:-1:-1;;2168:14:50;2180:2;2168:14;;;-1:-1:-1;1427:10003:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1427:10003:50;;;-1:-1:-1;1427:10003:50;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a06103fe565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610404565b6101fd610465565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561046e565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104b1565b6100d66104d9565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610558565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561059e565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166105ab565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103f53384846105e3565b50600192915050565b60025490565b6000610411848484610652565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461045b918691610456908661019e61077b565b6105e3565b5060019392505050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f59185906104569086610791565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f5918590610456908661019f61077b565b60006103f5338484610652565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b61067673ffffffffffffffffffffffffffffffffffffffff841615156101986107aa565b61069a73ffffffffffffffffffffffffffffffffffffffff831615156101996107aa565b6106a58383836107bc565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020546106d890826101a061077b565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107149082610791565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061078a84841115836107aa565b5050900390565b60008282016107a384821015836107aa565b9392505050565b816107b8576107b8816107c1565b5050565b505050565b6107eb817f42414c00000000000000000000000000000000000000000000000000000000006107ee565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220adfee3e4a53bb381ea6454054291caf3ccf884fd1de357eedd1e0665b338a43e64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F9 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x27F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F5 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x3FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x404 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x465 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x46E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4B1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x558 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x59E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5AB JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3C1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x411 DUP5 DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x45B SWAP2 DUP7 SWAP2 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19E PUSH2 0x77B JUMP JUMPDEST PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19F PUSH2 0x77B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x676 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x69A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x6A5 DUP4 DUP4 DUP4 PUSH2 0x7BC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x6D8 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0x77B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x714 SWAP1 DUP3 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78A DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x7A3 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x7B8 JUMPI PUSH2 0x7B8 DUP2 PUSH2 0x7C1 JUMP JUMPDEST POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x7EB DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x7EE JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD INVALID 0xE3 0xE4 0xA5 EXTCODESIZE 0xB3 DUP2 0xEA PUSH5 0x54054291CA RETURN 0xCC 0xF8 DUP5 REVERT SAR 0xE3 JUMPI 0xEE 0xDD 0x1E MOD PUSH6 0xB338A43E6473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"1427:10003:50:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:50;;;;;;;;;;;;;;;;;;:::i;3156:81::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6269:211;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:50;;;;;;;;;:::i;4022:117::-;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:50;;;;:::i;2448:85::-;;;:::i;6967:312::-;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:50;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:50;;;;;;;;;:::i;4570:149::-;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:50;;;;;;;;;;;:::i;2254:81::-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:50;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;10712:3:14;5752:35:50;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:50;5488:386;;;;;:::o;3156:81::-;3221:9;;;;3156:81;:::o;6269:211::-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;4022:117::-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;2448:85::-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;6967:312;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;10786:3:14;7143:36:50;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;4570:149::-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;10034:213::-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10308:3:14;7880:8:50;:71::i;:::-;7961:72;7970:23;;;;;10376:3:14;7961:8:50;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;10854:3:14;8122:21:50;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:57:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:57;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:57:o;918:101:14:-;987:9;982:34;;998:18;1006:9;998:7;:18::i;:::-;918:101;;:::o;11245:183:50:-;;;;:::o;1437:126:14:-;1484:28;1492:9;1484:28;:7;:28::i;:::-;1437:126;:::o;1670:3378::-;4395:66;1732:18;4383:79;;;4601:66;4595:4;4588:80;4743:1;4737:4;4730:15;2871:2;2904:18;;;2949;;;2876:4;2945:29;;;3747:1;3838:14;2856:18;;;;3827:26;;;;2997:18;;;;3044;;;3040:29;;3859:2;3855:17;3823:50;3737:4;3743:18;;;;;;3733:29;3729:2;3725:38;3802:72;;;;3797:3;3793:82;4810:4;4803:26;1761:14;;;;;5036:3;;5026:14"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"amount\",\"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\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"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}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}, initializes {decimals} with a default value of 18. To select a different value for {decimals}, use {_setupDecimals}. All three of these 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 value {ERC20} uses, unless {_setupDecimals} is called. 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}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"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\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol":{"ERC20Burnable":{"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":"amount","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"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\":\"amount\",\"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\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Extension of {ERC20} that allows token holders to destroy both their own tokens and those that they have an allowance for, in a way that can be recognized off-chain (via event analysis).\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"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 value {ERC20} uses, unless {_setupDecimals} is called. 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}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"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\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":\"ERC20Burnable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol":{"ERC20Permit":{"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":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":"amount","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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"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\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"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\":\"amount\",\"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\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\\\"1\\\"`. It's a good idea to use the same `name` that is defined as the ERC20 token name.\"},\"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 value {ERC20} uses, unless {_setupDecimals} is called. 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}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":\"ERC20Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xffe929ce55ef0cbdcc60eee8bc9375c295757ad13afe3d757646538aa0429ff5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90091ad3a860b0baa930d9b4083b503eb9ce2d222f738ce3b009d434271a27ae\",\"dweb:/ipfs/QmeQxy2YHbeumMXxKqEnXF7pGw2Ke43cHzttG59WYHibVV\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol":{"EnumerableSet":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202d80eeaeddf6bac26dee5b29a8621ed2a87f45cee379ebb360d49132155cd8fa64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D DUP1 0xEE 0xAE 0xDD 0xF6 0xBA 0xC2 PUSH14 0xEE5B29A8621ED2A87F45CEE379EB 0xB3 PUSH1 0xD4 SWAP2 ORIGIN ISZERO 0x5C 0xD8 STATICCALL PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1210:8346:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202d80eeaeddf6bac26dee5b29a8621ed2a87f45cee379ebb360d49132155cd8fa64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2D DUP1 0xEE 0xAE 0xDD 0xF6 0xBA 0xC2 PUSH14 0xEE5B29A8621ED2A87F45CEE379EB 0xB3 PUSH1 0xD4 SWAP2 ORIGIN ISZERO 0x5C 0xD8 STATICCALL PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1210:8346:53:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example { // Add the library methods using EnumerableSet for EnumerableSet.AddressSet; // Declare a set state variable EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol":{"ReentrancyGuard":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol":{"SafeCast":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220985624780af976161519156edf07744816d3181ac0ecbd930d5060b3c157a84d64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP9 JUMP 0x24 PUSH25 0xAF976161519156EDF07744816D3181AC0ECBD930D5060B3C1 JUMPI 0xA8 0x4D PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"860:738:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220985624780af976161519156edf07744816d3181ac0ecbd930d5060b3c157a84d64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP9 JUMP 0x24 PUSH25 0xAF976161519156EDF07744816D3181AC0ECBD930D5060B3C1 JUMPI 0xA8 0x4D PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"860:738:55:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX 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. Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing all math on `uint256` and `int256` and then downcasting.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol\":{\"keccak256\":\"0x900f61d39cfbb66db432105fdd524892b4d36fd57021231a7a011ecf2e06d848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9853feb7f6ea54eed91e45cc9f833062a768365295c64867ac7e83926cb3a25\",\"dweb:/ipfs/Qmeo7jrEjenzBXQ8pSDj76CqVwHg9rhRZKiPfDpLuHk42Q\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol":{"SafeERC20":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f7ab37ec4b5e2494d6d4d45949f05c5e6dc17e39f067e7821798201b05f877f264736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF7 0xAB CALLDATACOPY 0xEC 0x4B 0x5E 0x24 SWAP5 0xD6 0xD4 0xD4 MSIZE 0x49 CREATE 0x5C 0x5E PUSH14 0xC17E39F067E7821798201B05F877 CALLCODE PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"976:1750:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f7ab37ec4b5e2494d6d4d45949f05c5e6dc17e39f067e7821798201b05f877f264736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF7 0xAB CALLDATACOPY 0xEC 0x4B 0x5E 0x24 SWAP5 0xD6 0xD4 0xD4 MSIZE 0x49 CREATE 0x5C 0x5E PUSH14 0xC17E39F067E7821798201B05F877 CALLCODE PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"976:1750:56:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 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.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x773d0bf95fd51f7042cf5e20d1424aae24218c358ad71676c29878f76d81e7f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86d0397ef1443257ad7a49306f3f2bdd490f4a238d4d416373031b8262d211ee\",\"dweb:/ipfs/QmUHBu6gWfnhLEjQ3FCcbha6zUVZVfPFaNJMvnz9h8Prvy\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol":{"SafeMath":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208de733befe43421e42ecd6828df7fc1b3cc1cb01b0655d4416f5e39cce9dfa0264736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP14 0xE7 CALLER 0xBE INVALID NUMBER TIMESTAMP 0x1E TIMESTAMP 0xEC 0xD6 DUP3 DUP14 0xF7 0xFC SHL EXTCODECOPY 0xC1 0xCB ADD 0xB0 PUSH6 0x5D4416F5E39C 0xCE SWAP14 STATICCALL MUL PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"714:1310:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208de733befe43421e42ecd6828df7fc1b3cc1cb01b0655d4416f5e39cce9dfa0264736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP14 0xE7 CALLER 0xBE INVALID NUMBER TIMESTAMP 0x1E TIMESTAMP 0xEC 0xD6 DUP3 DUP14 0xF7 0xFC SHL EXTCODECOPY 0xC1 0xCB ADD 0xB0 PUSH6 0x5D4416F5E39C 0xCE SWAP14 STATICCALL MUL PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"714:1310:57:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when 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.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol":{"ERC20Mock":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"amount","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":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060405162000d8c38038062000d8c833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b50604052505082518391508290620001b8906003906020850190620001e7565b508051620001ce906004906020840190620001e7565b50506005805460ff191660121790555062000283915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200022a57805160ff19168380011785556200025a565b828001600101855582156200025a579182015b828111156200025a5782518255916020019190600101906200023d565b50620002689291506200026c565b5090565b5b808211156200026857600081556001016200026d565b610af980620002936000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806340c10f191161008c5780639dc29fac116100665780639dc29fac146102d8578063a457c2d714610311578063a9059cbb1461034a578063dd62ed3e14610383576100df565b806340c10f191461026257806370a082311461029d57806395d89b41146102d0576100df565b806323b872dd116100bd57806323b872dd146101c8578063313ce5671461020b5780633950935114610229576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec6103be565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610472565b604080519115158252519081900360200190f35b6101b6610488565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561048e565b6102136104ef565b6040805160ff9092168252519081900360200190f35b61019a6004803603604081101561023f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104f8565b61029b6004803603604081101561027857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053b565b005b6101b6600480360360208110156102b357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610549565b6100ec610571565b61029b600480360360408110156102ee57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105f0565b61019a6004803603604081101561032757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105fa565b61019a6004803603604081101561036057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610640565b6101b66004803603604081101561039957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661064d565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104685780601f1061043d57610100808354040283529160200191610468565b820191906000526020600020905b81548152906001019060200180831161044b57829003601f168201915b5050505050905090565b600061047f338484610685565b50600192915050565b60025490565b600061049b8484846106f4565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338085529252909120546104e59186916104e0908661019e61081d565b610685565b5060019392505050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161047f9185906104e09086610833565b610545828261084c565b5050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104685780601f1061043d57610100808354040283529160200191610468565b6105458282610905565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161047f9185906104e0908661019f61081d565b600061047f3384846106f4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b61071873ffffffffffffffffffffffffffffffffffffffff841615156101986109f5565b61073c73ffffffffffffffffffffffffffffffffffffffff831615156101996109f5565b610747838383610a03565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205461077a90826101a061081d565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107b69082610833565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061082c84841115836109f5565b5050900390565b600082820161084584821015836109f5565b9392505050565b61085860008383610a03565b61087261086d82610867610488565b90610833565b610a08565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546108a29082610833565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61092973ffffffffffffffffffffffffffffffffffffffff8316151561019b6109f5565b61093582600083610a03565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461096890826101b261081d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020556109a361086d8261099d610488565b90610a0d565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b816105455761054581610a1b565b505050565b600255565b60006108458383600161081d565b610a45817f42414c0000000000000000000000000000000000000000000000000000000000610a48565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220203b5bed202f8278e3ad10cb30abdfd60c7085b32a627e45c920f7316ad2e9d964736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xD8C CODESIZE SUB DUP1 PUSH3 0xD8C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP DUP3 MLOAD DUP4 SWAP2 POP DUP3 SWAP1 PUSH3 0x1B8 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x1E7 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1CE SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x1E7 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP PUSH3 0x283 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x22A JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x25A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x25A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x25A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x23D JUMP JUMPDEST POP PUSH3 0x268 SWAP3 SWAP2 POP PUSH3 0x26C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x268 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x26D JUMP JUMPDEST PUSH2 0xAF9 DUP1 PUSH3 0x293 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x9DC29FAC GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x34A JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x383 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x29D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2D0 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x229 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1AE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x3BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x472 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x488 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x48E JUMP JUMPDEST PUSH2 0x213 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x29B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x53B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x549 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x571 JUMP JUMPDEST PUSH2 0x29B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5F0 JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5FA JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x640 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x64D JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x468 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x43D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x468 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x44B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47F CALLER DUP5 DUP5 PUSH2 0x685 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49B DUP5 DUP5 DUP5 PUSH2 0x6F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x4E5 SWAP2 DUP7 SWAP2 PUSH2 0x4E0 SWAP1 DUP7 PUSH2 0x19E PUSH2 0x81D JUMP JUMPDEST PUSH2 0x685 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x47F SWAP2 DUP6 SWAP1 PUSH2 0x4E0 SWAP1 DUP7 PUSH2 0x833 JUMP JUMPDEST PUSH2 0x545 DUP3 DUP3 PUSH2 0x84C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x468 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x43D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x468 JUMP JUMPDEST PUSH2 0x545 DUP3 DUP3 PUSH2 0x905 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x47F SWAP2 DUP6 SWAP1 PUSH2 0x4E0 SWAP1 DUP7 PUSH2 0x19F PUSH2 0x81D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47F CALLER DUP5 DUP5 PUSH2 0x6F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x718 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x73C PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x747 DUP4 DUP4 DUP4 PUSH2 0xA03 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x77A SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0x81D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x7B6 SWAP1 DUP3 PUSH2 0x833 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x82C DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x9F5 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x845 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x9F5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x858 PUSH1 0x0 DUP4 DUP4 PUSH2 0xA03 JUMP JUMPDEST PUSH2 0x872 PUSH2 0x86D DUP3 PUSH2 0x867 PUSH2 0x488 JUMP JUMPDEST SWAP1 PUSH2 0x833 JUMP JUMPDEST PUSH2 0xA08 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x8A2 SWAP1 DUP3 PUSH2 0x833 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x929 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x935 DUP3 PUSH1 0x0 DUP4 PUSH2 0xA03 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x968 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0x81D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x9A3 PUSH2 0x86D DUP3 PUSH2 0x99D PUSH2 0x488 JUMP JUMPDEST SWAP1 PUSH2 0xA0D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH2 0x545 JUMPI PUSH2 0x545 DUP2 PUSH2 0xA1B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x845 DUP4 DUP4 PUSH1 0x1 PUSH2 0x81D JUMP JUMPDEST PUSH2 0xA45 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xA48 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 KECCAK256 EXTCODESIZE JUMPDEST 0xED KECCAK256 0x2F DUP3 PUSH25 0xE3AD10CB30ABDFD60C7085B32A627E45C920F7316AD2E9D964 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"750:316:58:-:0;;;784:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;784:76:58;;;;;;;;;;-1:-1:-1;784:76:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;784:76:58;;;;;;;;;;-1:-1:-1;784:76:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;784:76:58;;-1:-1:-1;;2118:13:50;;844:4:58;;-1:-1:-1;850:6:58;;2118:13:50;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;2141:17:50;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:50;:14;;-1:-1:-1;;2168:14:50;2180:2;2168:14;;;-1:-1:-1;750:316:58;;-1:-1:-1;;750:316:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:316:58;;;-1:-1:-1;750:316:58;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100df5760003560e01c806340c10f191161008c5780639dc29fac116100665780639dc29fac146102d8578063a457c2d714610311578063a9059cbb1461034a578063dd62ed3e14610383576100df565b806340c10f191461026257806370a082311461029d57806395d89b41146102d0576100df565b806323b872dd116100bd57806323b872dd146101c8578063313ce5671461020b5780633950935114610229576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec6103be565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610472565b604080519115158252519081900360200190f35b6101b6610488565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561048e565b6102136104ef565b6040805160ff9092168252519081900360200190f35b61019a6004803603604081101561023f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104f8565b61029b6004803603604081101561027857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053b565b005b6101b6600480360360208110156102b357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610549565b6100ec610571565b61029b600480360360408110156102ee57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105f0565b61019a6004803603604081101561032757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105fa565b61019a6004803603604081101561036057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610640565b6101b66004803603604081101561039957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661064d565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104685780601f1061043d57610100808354040283529160200191610468565b820191906000526020600020905b81548152906001019060200180831161044b57829003601f168201915b5050505050905090565b600061047f338484610685565b50600192915050565b60025490565b600061049b8484846106f4565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338085529252909120546104e59186916104e0908661019e61081d565b610685565b5060019392505050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161047f9185906104e09086610833565b610545828261084c565b5050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104685780601f1061043d57610100808354040283529160200191610468565b6105458282610905565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161047f9185906104e0908661019f61081d565b600061047f3384846106f4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b61071873ffffffffffffffffffffffffffffffffffffffff841615156101986109f5565b61073c73ffffffffffffffffffffffffffffffffffffffff831615156101996109f5565b610747838383610a03565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205461077a90826101a061081d565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107b69082610833565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061082c84841115836109f5565b5050900390565b600082820161084584821015836109f5565b9392505050565b61085860008383610a03565b61087261086d82610867610488565b90610833565b610a08565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546108a29082610833565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61092973ffffffffffffffffffffffffffffffffffffffff8316151561019b6109f5565b61093582600083610a03565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461096890826101b261081d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020556109a361086d8261099d610488565b90610a0d565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b816105455761054581610a1b565b505050565b600255565b60006108458383600161081d565b610a45817f42414c0000000000000000000000000000000000000000000000000000000000610a48565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220203b5bed202f8278e3ad10cb30abdfd60c7085b32a627e45c920f7316ad2e9d964736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x9DC29FAC GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x34A JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x383 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x29D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2D0 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x229 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1AE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x3BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x472 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x488 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x48E JUMP JUMPDEST PUSH2 0x213 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x29B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x53B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x549 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x571 JUMP JUMPDEST PUSH2 0x29B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5F0 JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5FA JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x640 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x64D JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x468 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x43D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x468 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x44B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47F CALLER DUP5 DUP5 PUSH2 0x685 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49B DUP5 DUP5 DUP5 PUSH2 0x6F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x4E5 SWAP2 DUP7 SWAP2 PUSH2 0x4E0 SWAP1 DUP7 PUSH2 0x19E PUSH2 0x81D JUMP JUMPDEST PUSH2 0x685 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x47F SWAP2 DUP6 SWAP1 PUSH2 0x4E0 SWAP1 DUP7 PUSH2 0x833 JUMP JUMPDEST PUSH2 0x545 DUP3 DUP3 PUSH2 0x84C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x468 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x43D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x468 JUMP JUMPDEST PUSH2 0x545 DUP3 DUP3 PUSH2 0x905 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x47F SWAP2 DUP6 SWAP1 PUSH2 0x4E0 SWAP1 DUP7 PUSH2 0x19F PUSH2 0x81D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47F CALLER DUP5 DUP5 PUSH2 0x6F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x718 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x73C PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x747 DUP4 DUP4 DUP4 PUSH2 0xA03 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x77A SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0x81D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x7B6 SWAP1 DUP3 PUSH2 0x833 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x82C DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x9F5 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x845 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x9F5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x858 PUSH1 0x0 DUP4 DUP4 PUSH2 0xA03 JUMP JUMPDEST PUSH2 0x872 PUSH2 0x86D DUP3 PUSH2 0x867 PUSH2 0x488 JUMP JUMPDEST SWAP1 PUSH2 0x833 JUMP JUMPDEST PUSH2 0xA08 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x8A2 SWAP1 DUP3 PUSH2 0x833 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x929 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x935 DUP3 PUSH1 0x0 DUP4 PUSH2 0xA03 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x968 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0x81D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x9A3 PUSH2 0x86D DUP3 PUSH2 0x99D PUSH2 0x488 JUMP JUMPDEST SWAP1 PUSH2 0xA0D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH2 0x545 JUMPI PUSH2 0x545 DUP2 PUSH2 0xA1B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x845 DUP4 DUP4 PUSH1 0x1 PUSH2 0x81D JUMP JUMPDEST PUSH2 0xA45 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xA48 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 KECCAK256 EXTCODESIZE JUMPDEST 0xED KECCAK256 0x2F DUP3 PUSH25 0xE3AD10CB30ABDFD60C7085B32A627E45C920F7316AD2E9D964 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"750:316:58:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:50;;;;;;;;;;;;;;;;;;:::i;3156:81::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6269:211;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:50;;;;;;;;;:::i;866:99:58:-;;;;;;;;;;;;;;;;-1:-1:-1;866:99:58;;;;;;;;;:::i;:::-;;4022:117:50;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:50;;;;:::i;2448:85::-;;;:::i;971:93:58:-;;;;;;;;;;;;;;;;-1:-1:-1;971:93:58;;;;;;;;;:::i;6967:312:50:-;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:50;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:50;;;;;;;;;:::i;4570:149::-;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:50;;;;;;;;;;;:::i;2254:81::-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:50;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;10712:3:14;5752:35:50;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:50;5488:386;;;;;:::o;3156:81::-;3221:9;;;;3156:81;:::o;6269:211::-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;866:99:58:-;934:24;940:9;951:6;934:5;:24::i;:::-;866:99;;:::o;4022:117:50:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;2448:85::-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;971:93:58;1036:21;1042:6;1050;1036:5;:21::i;6967:312:50:-;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;10786:3:14;7143:36:50;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;4570:149::-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;10034:213::-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10308:3:14;7880:8:50;:71::i;:::-;7961:72;7970:23;;;;;10376:3:14;7961:8:50;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;10854:3:14;8122:21:50;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:57:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:57;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:57:o;8583:297:50:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;9284:21;;;;;10506:3:14;9275:8:50;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;11950:3:14;9435:22:50;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;918:101:14:-;987:9;982:34;;998:18;1006:9;998:7;:18::i;11245:183:50:-;;;;:::o;3870:94::-;3937:12;:20;3870:94::o;1404:121:57:-;1462:7;1488:30;1492:1;1495;5172::14;1488:3:57;:30::i;1437:126:14:-;1484:28;1492:9;1484:28;:7;:28::i;:::-;1437:126;:::o;1670:3378::-;4395:66;1732:18;4383:79;;;4601:66;4595:4;4588:80;4743:1;4737:4;4730:15;2871:2;2904:18;;;2949;;;2876:4;2945:29;;;3747:1;3838:14;2856:18;;;;3827:26;;;;2997:18;;;;3044;;;3040:29;;3859:2;3855:17;3823:50;3737:4;3743:18;;;;;;3733:29;3729:2;3725:38;3802:72;;;;3797:3;3793:82;4810:4;4803:26;1761:14;;;;;5036:3;;5026:14"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,uint256)":"9dc29fac","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"amount\",\"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\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"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\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"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 value {ERC20} uses, unless {_setupDecimals} is called. 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}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"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\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol\":\"ERC20Mock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol\":{\"keccak256\":\"0x8d2b8caba9d7c313b1e6d13b305f9aae9304ed533b24b56345311f175a02ccd1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://37c52b721d6a59fb11dc5fdd27a633c0af3e0cb7a1044a8f6b86e9ac3d7fe1cb\",\"dweb:/ipfs/QmdMQG1kKsZtyDgxVk3ZLHkoYi442pxf1MfAKVj2B74qLj\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol":{"TestToken":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"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":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":"amount","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","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":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e06040523480156200001157600080fd5b50604051620013b0380380620013b0833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b50604081815260209283015182820190915260018252603160f81b838301528651909450869350839283918791620001d6916003918501906200025e565b508051620001ec9060049060208401906200025e565b50506005805460ff19166012179055508151602092830120608052805191012060a052507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c0526200023f8162000248565b505050620002fa565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002a157805160ff1916838001178555620002d1565b82800160010185558215620002d1579182015b82811115620002d1578251825591602001919060010190620002b4565b50620002df929150620002e3565b5090565b5b80821115620002df5760008155600101620002e4565b60805160a05160c0516110896200032760003980610d5f525080610da1525080610d8052506110896000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806370a08231116100cd578063a457c2d711610081578063d505accf11610066578063d505accf14610480578063dd62ed3e146104de578063ed24911d1461051957610151565b8063a457c2d71461040e578063a9059cbb1461044757610151565b80637ecebe00116100b25780637ecebe00146103a057806390193b7c146103d357806395d89b411461040657610151565b806370a082311461033457806379cc67901461036757610151565b8063313ce56711610124578063395093511161010957806339509351146102a357806340c10f19146102dc57806342966c681461031757610151565b8063313ce5671461027d5780633644e5151461029b57610151565b806306fdde0314610156578063095ea7b3146101d357806318160ddd1461022057806323b872dd1461023a575b600080fd5b61015e610521565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610198578181015183820152602001610180565b50505050905090810190601f1680156101c55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020c600480360360408110156101e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105d5565b604080519115158252519081900360200190f35b6102286105eb565b60408051918252519081900360200190f35b61020c6004803603606081101561025057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356105f1565b610285610652565b6040805160ff9092168252519081900360200190f35b61022861065b565b61020c600480360360408110156102b957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561066a565b610315600480360360408110156102f257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106ad565b005b6103156004803603602081101561032d57600080fd5b50356106bb565b6102286004803603602081101561034a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106c8565b6103156004803603604081101561037d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106f0565b610228600480360360208110156103b657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610726565b610228600480360360208110156103e957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610737565b61015e61075f565b61020c6004803603604081101561042457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107de565b61020c6004803603604081101561045d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610824565b610315600480360360e081101561049657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610831565b610228600480360360408110156104f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610906565b61022861093e565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105cb5780601f106105a0576101008083540402835291602001916105cb565b820191906000526020600020905b8154815290600101906020018083116105ae57829003601f168201915b5050505050905090565b60006105e2338484610948565b50600192915050565b60025490565b60006105fe8484846109b7565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033808552925290912054610648918691610643908661019e610ae0565b610948565b5060019392505050565b60055460ff1690565b600061066561093e565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105e29185906106439086610af6565b6106b78282610b0f565b5050565b6106c53382610bc8565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600061070a826101a16107038633610906565b9190610ae0565b9050610717833383610948565b6107218383610bc8565b505050565b600061073182610737565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105cb5780601f106105a0576101008083540402835291602001916105cb565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105e2918590610643908661019f610ae0565b60006105e23384846109b7565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886108608c610737565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012090506108f188826108e8878787610cb8565b886101f8610cf7565b6108fc888888610948565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000610665610d5b565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6109db73ffffffffffffffffffffffffffffffffffffffff84161515610198610e26565b6109ff73ffffffffffffffffffffffffffffffffffffffff83161515610199610e26565b610a0a838383610721565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610a3d90826101a0610ae0565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610a799082610af6565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610aef8484111583610e26565b5050900390565b6000828201610b088482101583610e26565b9392505050565b610b1b60008383610721565b610b35610b3082610b2a6105eb565b90610af6565b610e34565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610b659082610af6565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610bec73ffffffffffffffffffffffffffffffffffffffff8316151561019b610e26565b610bf882600083610721565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610c2b90826101b2610ae0565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610c66610b3082610c606105eb565b90610e39565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610d0285610e47565b9050610d18610d12878387610eae565b83610e26565b610d27428410156101b8610e26565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610dc8610fc0565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816106b7576106b781610fc4565b600255565b6000610b0883836001610ae0565b6000610e51610d5b565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b6000610ec082516041146101b9610e26565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610f39573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610fb457508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526106c5917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220b0cc4c6e9af615460fb0d2e883d83b45061166052bad504fe32d6c3997a5748464736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x13B0 CODESIZE SUB DUP1 PUSH3 0x13B0 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP3 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL DUP4 DUP4 ADD MSTORE DUP7 MLOAD SWAP1 SWAP5 POP DUP7 SWAP4 POP DUP4 SWAP3 DUP4 SWAP2 DUP8 SWAP2 PUSH3 0x1D6 SWAP2 PUSH1 0x3 SWAP2 DUP6 ADD SWAP1 PUSH3 0x25E JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1EC SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x25E JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x80 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0xA0 MSTORE POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH3 0x23F DUP2 PUSH3 0x248 JUMP JUMPDEST POP POP POP PUSH3 0x2FA JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x2A1 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x2D1 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x2D1 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x2D1 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x2B4 JUMP JUMPDEST POP PUSH3 0x2DF SWAP3 SWAP2 POP PUSH3 0x2E3 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2DF JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2E4 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH2 0x1089 PUSH3 0x327 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xD5F MSTORE POP DUP1 PUSH2 0xDA1 MSTORE POP DUP1 PUSH2 0xD80 MSTORE POP PUSH2 0x1089 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x151 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xCD JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4DE JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x519 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x447 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x3D3 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x406 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x367 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x124 JUMPI DUP1 PUSH4 0x39509351 GT PUSH2 0x109 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x2DC JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x317 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x27D JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x29B JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x23A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15E PUSH2 0x521 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x198 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x180 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1C5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5D5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x228 PUSH2 0x5EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x250 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x5F1 JUMP JUMPDEST PUSH2 0x285 PUSH2 0x652 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x228 PUSH2 0x65B JUMP JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x66A JUMP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6AD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6BB JUMP JUMPDEST PUSH2 0x228 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6C8 JUMP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6F0 JUMP JUMPDEST PUSH2 0x228 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x726 JUMP JUMPDEST PUSH2 0x228 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x737 JUMP JUMPDEST PUSH2 0x15E PUSH2 0x75F JUMP JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7DE JUMP JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x824 JUMP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x831 JUMP JUMPDEST PUSH2 0x228 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x906 JUMP JUMPDEST PUSH2 0x228 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x5CB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5A0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5CB JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5AE JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E2 CALLER DUP5 DUP5 PUSH2 0x948 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5FE DUP5 DUP5 DUP5 PUSH2 0x9B7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x648 SWAP2 DUP7 SWAP2 PUSH2 0x643 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xAE0 JUMP JUMPDEST PUSH2 0x948 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x665 PUSH2 0x93E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x5E2 SWAP2 DUP6 SWAP1 PUSH2 0x643 SWAP1 DUP7 PUSH2 0xAF6 JUMP JUMPDEST PUSH2 0x6B7 DUP3 DUP3 PUSH2 0xB0F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x6C5 CALLER DUP3 PUSH2 0xBC8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70A DUP3 PUSH2 0x1A1 PUSH2 0x703 DUP7 CALLER PUSH2 0x906 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xAE0 JUMP JUMPDEST SWAP1 POP PUSH2 0x717 DUP4 CALLER DUP4 PUSH2 0x948 JUMP JUMPDEST PUSH2 0x721 DUP4 DUP4 PUSH2 0xBC8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x731 DUP3 PUSH2 0x737 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x5CB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5A0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5CB JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x5E2 SWAP2 DUP6 SWAP1 PUSH2 0x643 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xAE0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E2 CALLER DUP5 DUP5 PUSH2 0x9B7 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0x860 DUP13 PUSH2 0x737 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x8F1 DUP9 DUP3 PUSH2 0x8E8 DUP8 DUP8 DUP8 PUSH2 0xCB8 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xCF7 JUMP JUMPDEST PUSH2 0x8FC DUP9 DUP9 DUP9 PUSH2 0x948 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x665 PUSH2 0xD5B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x9DB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xE26 JUMP JUMPDEST PUSH2 0x9FF PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xE26 JUMP JUMPDEST PUSH2 0xA0A DUP4 DUP4 DUP4 PUSH2 0x721 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA3D SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xAE0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xA79 SWAP1 DUP3 PUSH2 0xAF6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAEF DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xE26 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xB08 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xE26 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB1B PUSH1 0x0 DUP4 DUP4 PUSH2 0x721 JUMP JUMPDEST PUSH2 0xB35 PUSH2 0xB30 DUP3 PUSH2 0xB2A PUSH2 0x5EB JUMP JUMPDEST SWAP1 PUSH2 0xAF6 JUMP JUMPDEST PUSH2 0xE34 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xB65 SWAP1 DUP3 PUSH2 0xAF6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xBEC PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xE26 JUMP JUMPDEST PUSH2 0xBF8 DUP3 PUSH1 0x0 DUP4 PUSH2 0x721 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC2B SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xAE0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xC66 PUSH2 0xB30 DUP3 PUSH2 0xC60 PUSH2 0x5EB JUMP JUMPDEST SWAP1 PUSH2 0xE39 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD02 DUP6 PUSH2 0xE47 JUMP JUMPDEST SWAP1 POP PUSH2 0xD18 PUSH2 0xD12 DUP8 DUP4 DUP8 PUSH2 0xEAE JUMP JUMPDEST DUP4 PUSH2 0xE26 JUMP JUMPDEST PUSH2 0xD27 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xE26 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xDC8 PUSH2 0xFC0 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x6B7 JUMPI PUSH2 0x6B7 DUP2 PUSH2 0xFC4 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB08 DUP4 DUP4 PUSH1 0x1 PUSH2 0xAE0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE51 PUSH2 0xD5B JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEC0 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xE26 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xFB4 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x6C5 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB0 0xCC 0x4C PUSH15 0x9AF615460FB0D2E883D83B45061166 SDIV 0x2B 0xAD POP 0x4F 0xE3 0x2D PUSH13 0x3997A5748464736F6C63430007 ADD STOP CALLER ","sourceMap":"836:348:59:-:0;;;898:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;898:179:59;;;;;;;;;;-1:-1:-1;898:179:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;898:179:59;;;;;;;;;;-1:-1:-1;898:179:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;898:179:59;;;;;;;;;2020:280:49;;;;;;;;;-1:-1:-1;;;2020:280:49;;;;2118:13:50;;898:179:59;;-1:-1:-1;1030:4:59;;-1:-1:-1;1030:4:59;;;;1010:6;;2118:13:50;;:5;;:13;;;;:::i;:::-;-1:-1:-1;2141:17:50;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:50;:14;;-1:-1:-1;;2168:14:50;2180:2;2168:14;;;-1:-1:-1;2100:22:49;;;;;;;2085:37;;2150:25;;;;;2132:43;;-1:-1:-1;2198:95:49;2185:108;;1046:24:59::2;1061:8:::0;1046:14:::2;:24::i;:::-;898:179:::0;;;836:348;;10570:88:50;10630:9;:21;;-1:-1:-1;;10630:21:50;;;;;;;;;;;;10570:88::o;836:348:59:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;836:348:59;;;-1:-1:-1;836:348:59;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"6342":[{"length":32,"start":3456}],"6344":[{"length":32,"start":3489}],"6346":[{"length":32,"start":3423}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101515760003560e01c806370a08231116100cd578063a457c2d711610081578063d505accf11610066578063d505accf14610480578063dd62ed3e146104de578063ed24911d1461051957610151565b8063a457c2d71461040e578063a9059cbb1461044757610151565b80637ecebe00116100b25780637ecebe00146103a057806390193b7c146103d357806395d89b411461040657610151565b806370a082311461033457806379cc67901461036757610151565b8063313ce56711610124578063395093511161010957806339509351146102a357806340c10f19146102dc57806342966c681461031757610151565b8063313ce5671461027d5780633644e5151461029b57610151565b806306fdde0314610156578063095ea7b3146101d357806318160ddd1461022057806323b872dd1461023a575b600080fd5b61015e610521565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610198578181015183820152602001610180565b50505050905090810190601f1680156101c55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020c600480360360408110156101e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105d5565b604080519115158252519081900360200190f35b6102286105eb565b60408051918252519081900360200190f35b61020c6004803603606081101561025057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356105f1565b610285610652565b6040805160ff9092168252519081900360200190f35b61022861065b565b61020c600480360360408110156102b957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561066a565b610315600480360360408110156102f257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106ad565b005b6103156004803603602081101561032d57600080fd5b50356106bb565b6102286004803603602081101561034a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106c8565b6103156004803603604081101561037d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106f0565b610228600480360360208110156103b657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610726565b610228600480360360208110156103e957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610737565b61015e61075f565b61020c6004803603604081101561042457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107de565b61020c6004803603604081101561045d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610824565b610315600480360360e081101561049657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610831565b610228600480360360408110156104f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610906565b61022861093e565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105cb5780601f106105a0576101008083540402835291602001916105cb565b820191906000526020600020905b8154815290600101906020018083116105ae57829003601f168201915b5050505050905090565b60006105e2338484610948565b50600192915050565b60025490565b60006105fe8484846109b7565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033808552925290912054610648918691610643908661019e610ae0565b610948565b5060019392505050565b60055460ff1690565b600061066561093e565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105e29185906106439086610af6565b6106b78282610b0f565b5050565b6106c53382610bc8565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600061070a826101a16107038633610906565b9190610ae0565b9050610717833383610948565b6107218383610bc8565b505050565b600061073182610737565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105cb5780601f106105a0576101008083540402835291602001916105cb565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105e2918590610643908661019f610ae0565b60006105e23384846109b7565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886108608c610737565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012090506108f188826108e8878787610cb8565b886101f8610cf7565b6108fc888888610948565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000610665610d5b565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6109db73ffffffffffffffffffffffffffffffffffffffff84161515610198610e26565b6109ff73ffffffffffffffffffffffffffffffffffffffff83161515610199610e26565b610a0a838383610721565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610a3d90826101a0610ae0565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610a799082610af6565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610aef8484111583610e26565b5050900390565b6000828201610b088482101583610e26565b9392505050565b610b1b60008383610721565b610b35610b3082610b2a6105eb565b90610af6565b610e34565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610b659082610af6565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610bec73ffffffffffffffffffffffffffffffffffffffff8316151561019b610e26565b610bf882600083610721565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610c2b90826101b2610ae0565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610c66610b3082610c606105eb565b90610e39565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610d0285610e47565b9050610d18610d12878387610eae565b83610e26565b610d27428410156101b8610e26565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610dc8610fc0565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816106b7576106b781610fc4565b600255565b6000610b0883836001610ae0565b6000610e51610d5b565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b6000610ec082516041146101b9610e26565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610f39573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610fb457508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526106c5917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220b0cc4c6e9af615460fb0d2e883d83b45061166052bad504fe32d6c3997a5748464736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x151 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xCD JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4DE JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x519 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x447 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x3D3 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x406 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x367 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x124 JUMPI DUP1 PUSH4 0x39509351 GT PUSH2 0x109 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x2DC JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x317 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x27D JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x29B JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x23A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15E PUSH2 0x521 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x198 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x180 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1C5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5D5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x228 PUSH2 0x5EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x250 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x5F1 JUMP JUMPDEST PUSH2 0x285 PUSH2 0x652 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x228 PUSH2 0x65B JUMP JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x66A JUMP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6AD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6BB JUMP JUMPDEST PUSH2 0x228 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6C8 JUMP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6F0 JUMP JUMPDEST PUSH2 0x228 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x726 JUMP JUMPDEST PUSH2 0x228 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x737 JUMP JUMPDEST PUSH2 0x15E PUSH2 0x75F JUMP JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7DE JUMP JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x824 JUMP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x831 JUMP JUMPDEST PUSH2 0x228 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x906 JUMP JUMPDEST PUSH2 0x228 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x5CB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5A0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5CB JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5AE JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E2 CALLER DUP5 DUP5 PUSH2 0x948 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5FE DUP5 DUP5 DUP5 PUSH2 0x9B7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x648 SWAP2 DUP7 SWAP2 PUSH2 0x643 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xAE0 JUMP JUMPDEST PUSH2 0x948 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x665 PUSH2 0x93E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x5E2 SWAP2 DUP6 SWAP1 PUSH2 0x643 SWAP1 DUP7 PUSH2 0xAF6 JUMP JUMPDEST PUSH2 0x6B7 DUP3 DUP3 PUSH2 0xB0F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x6C5 CALLER DUP3 PUSH2 0xBC8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70A DUP3 PUSH2 0x1A1 PUSH2 0x703 DUP7 CALLER PUSH2 0x906 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xAE0 JUMP JUMPDEST SWAP1 POP PUSH2 0x717 DUP4 CALLER DUP4 PUSH2 0x948 JUMP JUMPDEST PUSH2 0x721 DUP4 DUP4 PUSH2 0xBC8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x731 DUP3 PUSH2 0x737 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x5CB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5A0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5CB JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x5E2 SWAP2 DUP6 SWAP1 PUSH2 0x643 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xAE0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E2 CALLER DUP5 DUP5 PUSH2 0x9B7 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0x860 DUP13 PUSH2 0x737 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x8F1 DUP9 DUP3 PUSH2 0x8E8 DUP8 DUP8 DUP8 PUSH2 0xCB8 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xCF7 JUMP JUMPDEST PUSH2 0x8FC DUP9 DUP9 DUP9 PUSH2 0x948 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x665 PUSH2 0xD5B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x9DB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xE26 JUMP JUMPDEST PUSH2 0x9FF PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xE26 JUMP JUMPDEST PUSH2 0xA0A DUP4 DUP4 DUP4 PUSH2 0x721 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA3D SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xAE0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xA79 SWAP1 DUP3 PUSH2 0xAF6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAEF DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xE26 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xB08 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xE26 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB1B PUSH1 0x0 DUP4 DUP4 PUSH2 0x721 JUMP JUMPDEST PUSH2 0xB35 PUSH2 0xB30 DUP3 PUSH2 0xB2A PUSH2 0x5EB JUMP JUMPDEST SWAP1 PUSH2 0xAF6 JUMP JUMPDEST PUSH2 0xE34 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xB65 SWAP1 DUP3 PUSH2 0xAF6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xBEC PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xE26 JUMP JUMPDEST PUSH2 0xBF8 DUP3 PUSH1 0x0 DUP4 PUSH2 0x721 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC2B SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xAE0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xC66 PUSH2 0xB30 DUP3 PUSH2 0xC60 PUSH2 0x5EB JUMP JUMPDEST SWAP1 PUSH2 0xE39 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD02 DUP6 PUSH2 0xE47 JUMP JUMPDEST SWAP1 POP PUSH2 0xD18 PUSH2 0xD12 DUP8 DUP4 DUP8 PUSH2 0xEAE JUMP JUMPDEST DUP4 PUSH2 0xE26 JUMP JUMPDEST PUSH2 0xD27 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xE26 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xDC8 PUSH2 0xFC0 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x6B7 JUMPI PUSH2 0x6B7 DUP2 PUSH2 0xFC4 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB08 DUP4 DUP4 PUSH1 0x1 PUSH2 0xAE0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE51 PUSH2 0xD5B JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEC0 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xE26 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xFB4 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x6C5 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB0 0xCC 0x4C PUSH15 0x9AF615460FB0D2E883D83B45061166 SDIV 0x2B 0xAD POP 0x4F 0xE3 0x2D PUSH13 0x3997A5748464736F6C63430007 ADD STOP CALLER ","sourceMap":"836:348:59:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:50;;;;;;;;;;;;;;;;;;:::i;3156:81::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2243:113:52;;;:::i;6269:211:50:-;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:50;;;;;;;;;:::i;1083:99:59:-;;;;;;;;;;;;;;;;-1:-1:-1;1083:99:59;;;;;;;;;:::i;:::-;;473:87:51;;;;;;;;;;;;;;;;-1:-1:-1;473:87:51;;:::i;4022:117:50:-;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:50;;;;:::i;866:283:51:-;;;;;;;;;;;;;;;;-1:-1:-1;866:283:51;;;;;;;;;:::i;2006:113:52:-;;;;;;;;;;;;;;;;-1:-1:-1;2006:113:52;;;;:::i;1303:121:40:-;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:40;;;;:::i;2448:85:50:-;;;:::i;6967:312::-;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:50;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:50;;;;;;;;;:::i;1437:508:52:-;;;;;;;;;;;;;;;;-1:-1:-1;1437:508:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4570:149:50:-;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:50;;;;;;;;;;;:::i;1184:113:40:-;;;:::i;2254:81:50:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:50;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;10712:3:14;5752:35:50;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:50;5488:386;;;;;:::o;3156:81::-;3221:9;;;;3156:81;:::o;2243:113:52:-;2303:7;2329:20;:18;:20::i;:::-;2322:27;;2243:113;:::o;6269:211:50:-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;1083:99:59:-;1151:24;1157:9;1168:6;1151:5;:24::i;:::-;1083:99;;:::o;473:87:51:-;528:25;534:10;546:6;528:5;:25::i;:::-;473:87;:::o;4022:117:50:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;866:283:51:-;942:26;971:79;1006:6;10920:3:14;971:30:51;981:7;990:10;971:9;:30::i;:::-;:34;:79;:34;:79::i;:::-;942:108;;1061:49;1070:7;1079:10;1091:18;1061:8;:49::i;:::-;1120:22;1126:7;1135:6;1120:5;:22::i;:::-;866:283;;;:::o;2006:113:52:-;2067:7;2093:19;2106:5;2093:12;:19::i;:::-;2086:26;2006:113;-1:-1:-1;;2006:113:52:o;1303:121:40:-;1398:19;;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;2448:85:50:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;6967:312;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;10786:3:14;7143:36:50;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;1437:508:52:-;1645:18;921:109;1718:5;1725:7;1734:5;1741:19;1754:5;1741:12;:19::i;:::-;1762:8;1689:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:115;;;;;;1645:136;;1792:104;1814:5;1821:10;1833:26;1851:1;1854;1857;1833:17;:26::i;:::-;1861:8;12759:3:14;1792:21:52;:104::i;:::-;1907:31;1916:5;1923:7;1932:5;1907:8;:31::i;:::-;1437:508;;;;;;;;:::o;4570:149:50:-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;1184:113:40:-;1244:7;1270:20;:18;:20::i;10034:213:50:-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10308:3:14;7880:8:50;:71::i;:::-;7961:72;7970:23;;;;;10376:3:14;7961:8:50;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;10854:3:14;8122:21:50;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:57:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:57;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:57:o;8583:297:50:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;9284:21;;;;;10506:3:14;9275:8:50;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;11950:3:14;9435:22:50;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;3803:419:40:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:40;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:40:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12277:3:14;2487:8:40;:63::i;:::-;-1:-1:-1;;;2884:19:40;;;;;;;;:10;:19;;;;;:24;;2907:1;2884:24;;;-1:-1:-1;;1701:1214:40:o;2386:188:49:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;918:101:14:-;987:9;982:34;;998:18;1006:9;998:7;:18::i;3870:94:50:-;3937:12;:20;3870:94::o;1404:121:57:-;1462:7;1488:30;1492:1;1495;5172::14;1488:3:57;:30::i;3199:183:49:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:40:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12334:3:14;3082:8:40;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:40;;;;;;-1:-1:-1;;3728:30:40;;;;;;;:61;;;3782:7;3762:27;;:16;:27;;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:40:o;3433:187:49:-;3595:9;;3570:44::o;1437:126:14:-;4395:66;1732:18;4383:79;;;4601:66;4595:4;4588:80;4743:1;4737:4;4730:15;2871:2;2904:18;;;2949;;;2876:4;2945:29;;;3747:1;3838:14;2856:18;;;3827:26;2997:18;;;;3044;;;3040:29;3859:2;3855:17;3823:50;3802:72;;3797:3;3793:82;4810:4;4803:26;1484:28;;;;1761:14;;5036:3;;5026:14"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"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\"},{\"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\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"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\":\"amount\",\"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\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"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\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"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 value {ERC20} uses, unless {_setupDecimals} is called. 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}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\":\"TestToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xffe929ce55ef0cbdcc60eee8bc9375c295757ad13afe3d757646538aa0429ff5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90091ad3a860b0baa930d9b4083b503eb9ce2d222f738ce3b009d434271a27ae\",\"dweb:/ipfs/QmeQxy2YHbeumMXxKqEnXF7pGw2Ke43cHzttG59WYHibVV\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\":{\"keccak256\":\"0x6a1c952de46f46c608231dfd68986fba02d7cff3c4abfe5708497f04e6ca0358\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://82855be50bfe977a14fb684384790f19a8bbdf1937b69a89608c2ad51817e32a\",\"dweb:/ipfs/Qmbf8L4dQSFguPD4CCmEFXjDn2HBxtCbJjU2C3qYRkmkkb\"]}},\"version\":1}"}},"@balancer-labs/v2-vault/contracts/AssetHelpers.sol":{"AssetHelpers":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":\"AssetHelpers\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]}},\"version\":1}"}},"contracts/BALTokenHolder.sol":{"BALTokenHolder":{"abi":[{"inputs":[{"internalType":"contract IBalancerToken","name":"balancerToken","type":"address"},{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"string","name":"name","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IBalancerToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sweepTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e060405234801561001057600080fd5b50604051610ab7380380610ab78339818101604052606081101561003357600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005e57600080fd5b90830190602082018581111561007357600080fd5b825164010000000081118282018810171561008d57600080fd5b82525081516020918201929091019080838360005b838110156100ba5781810151838201526020016100a2565b50505050905090810190601f1680156100e75780820380516001836020036101000a031916815260200191505b50604052505030608052506001600160601b0319606083811b821660a05284901b1660c052805161011f906000906020840190610128565b505050506101bb565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061016957805160ff1916838001178555610196565b82800160010185558215610196579182015b8281111561019657825182559160200191906001019061017b565b506101a29291506101a6565b5090565b5b808211156101a257600081556001016101a7565b60805160a05160601c60c05160601c6108c06101f76000398061033e52806104c3528061050752508061041f5250806102c952506108c06000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638d928af81161005b5780638d928af814610195578063aaabadc5146101c6578063c0039699146101ce578063c1075329146101d65761007d565b806317d7de7c14610082578063851c1bb3146100ff5780638b6ca32c14610150575b600080fd5b61008a61020f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100c45781810151838201526020016100ac565b50505050905090810190601f1680156100f15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61013e6004803603602081101561011557600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b60408051918252519081900360200190f35b6101936004803603606081101561016657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610334565b005b61019d61041d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61019d610441565b61019d6104c1565b610193600480360360408110156101ec57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104e5565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156102b95780601f1061028e576101008083540402835291602001916102b9565b820191906000526020600020905b81548152906001019060200180831161029c57829003601f168201915b5050505050905090565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b61033c610532565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f43616e6e6f742073776565702042414c00000000000000000000000000000000604482015290519081900360640190fd5b61041873ffffffffffffffffffffffffffffffffffffffff8416838361057b565b505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061044b61041d565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6104ed610532565b61052e73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016838361057b565b5050565b60006105616000357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b90506105786105708233610608565b6101916106d1565b50565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104189084906106df565b6000610612610441565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561069e57600080fd5b505afa1580156106b2573d6000803e3d6000fd5b505050506040513d60208110156106c857600080fd5b50519392505050565b8161052e5761052e816107fb565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061074857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161070b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146107aa576040519150601f19603f3d011682016040523d82523d6000602084013e6107af565b606091505b509150915060008214156107c7573d6000803e3d6000fd5b6107f58151600014806107ed57508180602001905160208110156107ea57600080fd5b50515b6101a26106d1565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610578917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220b4546763014c2b566c3305c61d14b47533afe0c0740f9dbe7479e50dcace78bc64736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xAB7 CODESIZE SUB DUP1 PUSH2 0xAB7 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD DUP1 MLOAD SWAP2 MLOAD SWAP4 SWAP6 SWAP3 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP ADDRESS PUSH1 0x80 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP5 SWAP1 SHL AND PUSH1 0xC0 MSTORE DUP1 MLOAD PUSH2 0x11F SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x128 JUMP JUMPDEST POP POP POP POP PUSH2 0x1BB JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x169 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x196 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x196 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x196 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x17B JUMP JUMPDEST POP PUSH2 0x1A2 SWAP3 SWAP2 POP PUSH2 0x1A6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1A7 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x8C0 PUSH2 0x1F7 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x33E MSTORE DUP1 PUSH2 0x4C3 MSTORE DUP1 PUSH2 0x507 MSTORE POP DUP1 PUSH2 0x41F MSTORE POP DUP1 PUSH2 0x2C9 MSTORE POP PUSH2 0x8C0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0xC1075329 EQ PUSH2 0x1D6 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x17D7DE7C EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x8B6CA32C EQ PUSH2 0x150 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x20F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x334 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19D PUSH2 0x41D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH2 0x441 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x4C1 JUMP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4E5 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2B9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x28E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2B9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x29C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x33C PUSH2 0x532 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742073776565702042414C00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x418 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44B PUSH2 0x41D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x532 JUMP JUMPDEST PUSH2 0x52E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x561 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST SWAP1 POP PUSH2 0x578 PUSH2 0x570 DUP3 CALLER PUSH2 0x608 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x6D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x418 SWAP1 DUP5 SWAP1 PUSH2 0x6DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x612 PUSH2 0x441 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x52E JUMPI PUSH2 0x52E DUP2 PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x748 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x70B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7AF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x7C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x7F5 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x7ED JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x6D1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x578 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 SLOAD PUSH8 0x63014C2B566C3305 0xC6 SAR EQ 0xB4 PUSH22 0x33AFE0C0740F9DBE7479E50DCACE78BC64736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1563:1294:61:-:0;;;1751:465;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1751:465:61;;;;;;;;;;-1:-1:-1;1751:465:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1751:465:61;;-1:-1:-1;;1143:4:43;2049:46:39;;-1:-1:-1;;;1162:14:43;;;;;::::1;::::0;2157:30:61;;;;::::1;::::0;2197:12;;::::1;::::0;1119:31:43;;2197:12:61::1;::::0;::::1;::::0;::::1;:::i;:::-;;1751:465:::0;;;1563:1294;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1563:1294:61;;;-1:-1:-1;1563:1294:61;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3380":[{"length":32,"start":713}],"4027":[{"length":32,"start":1055}],"8059":[{"length":32,"start":830},{"length":32,"start":1219},{"length":32,"start":1287}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c80638d928af81161005b5780638d928af814610195578063aaabadc5146101c6578063c0039699146101ce578063c1075329146101d65761007d565b806317d7de7c14610082578063851c1bb3146100ff5780638b6ca32c14610150575b600080fd5b61008a61020f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100c45781810151838201526020016100ac565b50505050905090810190601f1680156100f15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61013e6004803603602081101561011557600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b60408051918252519081900360200190f35b6101936004803603606081101561016657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610334565b005b61019d61041d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61019d610441565b61019d6104c1565b610193600480360360408110156101ec57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104e5565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156102b95780601f1061028e576101008083540402835291602001916102b9565b820191906000526020600020905b81548152906001019060200180831161029c57829003601f168201915b5050505050905090565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b61033c610532565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f43616e6e6f742073776565702042414c00000000000000000000000000000000604482015290519081900360640190fd5b61041873ffffffffffffffffffffffffffffffffffffffff8416838361057b565b505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061044b61041d565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6104ed610532565b61052e73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016838361057b565b5050565b60006105616000357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b90506105786105708233610608565b6101916106d1565b50565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104189084906106df565b6000610612610441565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561069e57600080fd5b505afa1580156106b2573d6000803e3d6000fd5b505050506040513d60208110156106c857600080fd5b50519392505050565b8161052e5761052e816107fb565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061074857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161070b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146107aa576040519150601f19603f3d011682016040523d82523d6000602084013e6107af565b606091505b509150915060008214156107c7573d6000803e3d6000fd5b6107f58151600014806107ed57508180602001905160208110156107ea57600080fd5b50515b6101a26106d1565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610578917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220b4546763014c2b566c3305c61d14b47533afe0c0740f9dbe7479e50dcace78bc64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0xC1075329 EQ PUSH2 0x1D6 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x17D7DE7C EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x8B6CA32C EQ PUSH2 0x150 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x20F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x334 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19D PUSH2 0x41D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH2 0x441 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x4C1 JUMP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4E5 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2B9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x28E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2B9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x29C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x33C PUSH2 0x532 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742073776565702042414C00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x418 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44B PUSH2 0x41D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x532 JUMP JUMPDEST PUSH2 0x52E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x561 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST SWAP1 POP PUSH2 0x578 PUSH2 0x570 DUP3 CALLER PUSH2 0x608 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x6D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x418 SWAP1 DUP5 SWAP1 PUSH2 0x6DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x612 PUSH2 0x441 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x52E JUMPI PUSH2 0x52E DUP2 PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x748 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x70B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7AF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x7C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x7F5 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x7ED JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x6D1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x578 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 SLOAD PUSH8 0x63014C2B566C3305 0xC6 SAR EQ 0xB4 PUSH22 0x33AFE0C0740F9DBE7479E50DCACE78BC64736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1563:1294:61:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2333:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2607:430:39;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:39;;;;:::i;:::-;;;;;;;;;;;;;;;;2600:255:61;;;;;;;;;;;;;;;;-1:-1:-1;2600:255:61;;;;;;;;;;;;;;;;;;:::i;:::-;;1247:79:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1386:109;;;:::i;2222:105:61:-;;;:::i;2434:160::-;;;;;;;;;;;;;;;;-1:-1:-1;2434:160:61;;;;;;;;;:::i;2333:95::-;2416:5;2409:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2384:13;;2409:12;;2416:5;;2409:12;;2416:5;2409:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2333:95;:::o;2607:430:39:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;2600:255:61:-;2276:21:39;:19;:21::i;:::-;2758:14:61::1;2749:23;;:5;:23;;;;2741:52;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;2803:45;:26;::::0;::::1;2830:9:::0;2841:6;2803:26:::1;:45::i;:::-;2600:255:::0;;;:::o;1247:79:43:-;1313:6;1247:79;:::o;1386:109::-;1432:11;1462:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1462:26:43;;-1:-1:-1;1386:109:43;:::o;2222:105:61:-;2306:14;2222:105;:::o;2434:160::-;2276:21:39;:19;:21::i;:::-;2533:54:61::1;:35;2540:14;2533:35;2569:9:::0;2580:6;2533:35:::1;:54::i;:::-;2434:160:::0;;:::o;2420:181:39:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;9891:3:14;2524:8:39;:70::i;:::-;2420:181;:::o;1000:214:56:-;1148:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1171:23;1148:58;;;1112:95;;1140:5;;1112:19;:95::i;1501:178:43:-;1589:4;1612:15;:13;:15::i;:::-;:26;;;1639:8;1649:7;1666:4;1612:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1612:60:43;;1501:178;-1:-1:-1;;;1501:178:43:o;918:101:14:-;987:9;982:34;;998:18;1006:9;998:7;:18::i;1810:914:56:-;2112:12;2126:23;2153:5;:10;;2164:4;2153:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2111:58;;;;2363:1;2354:7;2351:14;2348:2;;;2405:16;2402:1;2399;2384:38;2449:16;2446:1;2439:27;2348:2;2620:97;2629:10;:17;2650:1;2629:22;:56;;;;2666:10;2655:30;;;;;;;;;;;;;;;-1:-1:-1;2655:30:56;2629:56;10980:3:14;2620:8:56;:97::i;:::-;1810:914;;;;:::o;1437:126:14:-;4395:66;1732:18;4383:79;;;4601:66;4595:4;4588:80;4743:1;4737:4;4730:15;2871:2;2904:18;;;2949;;;2876:4;2945:29;;;3747:1;3838:14;2856:18;;;3827:26;2997:18;;;;3044;;;3040:29;3859:2;3855:17;3823:50;3802:72;;3797:3;3793:82;4810:4;4803:26;1484:28;;;;1761:14;;5036:3;;5026:14"},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getBalancerToken()":"c0039699","getName()":"17d7de7c","getVault()":"8d928af8","sweepTokens(address,address,uint256)":"8b6ca32c","withdrawFunds(address,uint256)":"c1075329"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"balancerToken\",\"type\":\"address\"},{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sweepTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract simply holds the BAL token and delegates to Balancer Governance the permission to withdraw it. It is intended to serve as the recipient of automated BAL minting via the liquidity mining gauges, allowing for the final recipient of the funds to be configurable without having to alter the gauges themselves. There is also a separate auxiliary function to sweep any non-BAL tokens sent here by mistake.\",\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BALTokenHolder.sol\":\"BALTokenHolder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0x1e5bca6b4fb897adc2458f65aa7abed8499dcf146ac5872c62544d91516867cb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faa81254fe029b7ccd05635d6919da30bcb2114026996d10f6b51fc0e1f5b850\",\"dweb:/ipfs/Qmax3d2kq51xjt6hjYgskuXSrsB3fBZ4LAxBPRDDzbg8XD\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0x6975f1e2199b1d9e4fff7133f9e9ab652e2f378d38551d33393eec50f459574a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2c4b81b8bb50d58afee844cdc06a04bca72b379f51eda3289a9cc4ff97a80dfc\",\"dweb:/ipfs/QmR1b9e6Ku7H3ea4yBGmUznqabtioTkktRWvhZFgRUZWy4\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol\":{\"keccak256\":\"0xeb9dca0126103531b1a848558e7295bcc99a1a75fb059ce93e91b665222af8f8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://40739f46fa7c7c0c301fa73b96d82a1b2f4580bc2321a700a3fde159500cd8f1\",\"dweb:/ipfs/QmZ6Hff3CUDQi4Et9Y2wkFz3wMHzjwpeAh97TaVYSgjiTm\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0x6c48b193602f6d6407e8fca3389fb32264a91f1de8ec33db209694e3bf9d0d13\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1fa358f1537907cdd9f6b176f5a1effbbe9925429634038e9c533493ed824cab\",\"dweb:/ipfs/QmW1EcMLkMFuDKrPwWJ2qhBkmVzAUTVEMP75kw7D8XTjJf\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x773d0bf95fd51f7042cf5e20d1424aae24218c358ad71676c29878f76d81e7f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86d0397ef1443257ad7a49306f3f2bdd490f4a238d4d416373031b8262d211ee\",\"dweb:/ipfs/QmUHBu6gWfnhLEjQ3FCcbha6zUVZVfPFaNJMvnz9h8Prvy\"]},\"contracts/BALTokenHolder.sol\":{\"keccak256\":\"0xb936f1fbc189eb2808ca9bcee946c49c6ad1f74bce8e0a52ca04de7d044b273c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://389a375096bb7fd2f068aec63b00add80ce7cac5f7a636d168baf6e4ce49b3e3\",\"dweb:/ipfs/QmceaHRaLRhXfsDPH7vtGekAPs3w9yWVca4jH39ipYJjWd\"]}},\"version\":1}"}},"contracts/BALTokenHolderFactory.sol":{"BALTokenHolderFactory":{"abi":[{"inputs":[{"internalType":"contract IBalancerToken","name":"balancerToken","type":"address"},{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract BALTokenHolder","name":"balTokenHolder","type":"address"},{"indexed":false,"internalType":"string","name":"name","type":"string"}],"name":"BALTokenHolderCreated","type":"event"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"create","outputs":[{"internalType":"contract IBALTokenHolder","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IBalancerToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"isHolderFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b50604051610f3e380380610f3e8339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c610ec061007e600039806101a45250806103a45250610ec06000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806336390717146100515780638d928af814610098578063b6a46b3b146100c9578063c00396991461016f575b600080fd5b6100846004803603602081101561006757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610177565b604080519115158252519081900360200190f35b6100a06101a2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100a0600480360360208110156100df57600080fd5b8101906020810181356401000000008111156100fa57600080fd5b82018360208201111561010c57600080fd5b8035906020019184600183028401116401000000008311171561012e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506101c6945050505050565b6100a06103a2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000806101d16103a2565b6101d96101a2565b846040516101e6906103c6565b808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610258578181015183820152602001610240565b50505050905090810190601f1680156102855780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f0801580156102a8573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff811660008181526020818152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055805193845283820181815288519185019190915287519495507f59750620eb9a4ec5e0719f2a764a31cf79c10817ba43fd86384231337e71db94948694899490936060850192908601918190849084905b83811015610361578181015183820152602001610349565b50505050905090810190601f16801561038e5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a192915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610ab7806103d48339019056fe60e060405234801561001057600080fd5b50604051610ab7380380610ab78339818101604052606081101561003357600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005e57600080fd5b90830190602082018581111561007357600080fd5b825164010000000081118282018810171561008d57600080fd5b82525081516020918201929091019080838360005b838110156100ba5781810151838201526020016100a2565b50505050905090810190601f1680156100e75780820380516001836020036101000a031916815260200191505b50604052505030608052506001600160601b0319606083811b821660a05284901b1660c052805161011f906000906020840190610128565b505050506101bb565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061016957805160ff1916838001178555610196565b82800160010185558215610196579182015b8281111561019657825182559160200191906001019061017b565b506101a29291506101a6565b5090565b5b808211156101a257600081556001016101a7565b60805160a05160601c60c05160601c6108c06101f76000398061033e52806104c3528061050752508061041f5250806102c952506108c06000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638d928af81161005b5780638d928af814610195578063aaabadc5146101c6578063c0039699146101ce578063c1075329146101d65761007d565b806317d7de7c14610082578063851c1bb3146100ff5780638b6ca32c14610150575b600080fd5b61008a61020f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100c45781810151838201526020016100ac565b50505050905090810190601f1680156100f15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61013e6004803603602081101561011557600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b60408051918252519081900360200190f35b6101936004803603606081101561016657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610334565b005b61019d61041d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61019d610441565b61019d6104c1565b610193600480360360408110156101ec57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104e5565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156102b95780601f1061028e576101008083540402835291602001916102b9565b820191906000526020600020905b81548152906001019060200180831161029c57829003601f168201915b5050505050905090565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b61033c610532565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f43616e6e6f742073776565702042414c00000000000000000000000000000000604482015290519081900360640190fd5b61041873ffffffffffffffffffffffffffffffffffffffff8416838361057b565b505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061044b61041d565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6104ed610532565b61052e73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016838361057b565b5050565b60006105616000357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b90506105786105708233610608565b6101916106d1565b50565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104189084906106df565b6000610612610441565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561069e57600080fd5b505afa1580156106b2573d6000803e3d6000fd5b505050506040513d60208110156106c857600080fd5b50519392505050565b8161052e5761052e816107fb565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061074857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161070b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146107aa576040519150601f19603f3d011682016040523d82523d6000602084013e6107af565b606091505b509150915060008214156107c7573d6000803e3d6000fd5b6107f58151600014806107ed57508180602001905160208110156107ea57600080fd5b50515b6101a26106d1565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610578917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220b4546763014c2b566c3305c61d14b47533afe0c0740f9dbe7479e50dcace78bc64736f6c63430007010033a264697066735822122039bfd0f9680b26eae9e67c4fd766a3e2482477a72007cb0713df5fd3bad813a564736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xF3E CODESIZE SUB DUP1 PUSH2 0xF3E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0xEC0 PUSH2 0x7E PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1A4 MSTORE POP DUP1 PUSH2 0x3A4 MSTORE POP PUSH2 0xEC0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x36390717 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0xB6A46B3B EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x16F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x84 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x177 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH2 0x1A2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1C6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x3A2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D1 PUSH2 0x3A2 JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x1A2 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD PUSH2 0x1E6 SWAP1 PUSH2 0x3C6 JUMP JUMPDEST DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x258 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x240 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x285 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x2A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 MLOAD SWAP4 DUP5 MSTORE DUP4 DUP3 ADD DUP2 DUP2 MSTORE DUP9 MLOAD SWAP2 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP8 MLOAD SWAP5 SWAP6 POP PUSH32 0x59750620EB9A4EC5E0719F2A764A31CF79C10817BA43FD86384231337E71DB94 SWAP5 DUP7 SWAP5 DUP10 SWAP5 SWAP1 SWAP4 PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 DUP7 ADD SWAP2 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x361 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x349 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x38E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xAB7 DUP1 PUSH2 0x3D4 DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xAB7 CODESIZE SUB DUP1 PUSH2 0xAB7 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD DUP1 MLOAD SWAP2 MLOAD SWAP4 SWAP6 SWAP3 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP ADDRESS PUSH1 0x80 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP5 SWAP1 SHL AND PUSH1 0xC0 MSTORE DUP1 MLOAD PUSH2 0x11F SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x128 JUMP JUMPDEST POP POP POP POP PUSH2 0x1BB JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x169 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x196 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x196 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x196 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x17B JUMP JUMPDEST POP PUSH2 0x1A2 SWAP3 SWAP2 POP PUSH2 0x1A6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1A7 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x8C0 PUSH2 0x1F7 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x33E MSTORE DUP1 PUSH2 0x4C3 MSTORE DUP1 PUSH2 0x507 MSTORE POP DUP1 PUSH2 0x41F MSTORE POP DUP1 PUSH2 0x2C9 MSTORE POP PUSH2 0x8C0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0xC1075329 EQ PUSH2 0x1D6 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x17D7DE7C EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x8B6CA32C EQ PUSH2 0x150 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x20F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x334 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19D PUSH2 0x41D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH2 0x441 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x4C1 JUMP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4E5 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2B9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x28E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2B9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x29C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x33C PUSH2 0x532 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742073776565702042414C00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x418 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44B PUSH2 0x41D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x532 JUMP JUMPDEST PUSH2 0x52E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x561 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST SWAP1 POP PUSH2 0x578 PUSH2 0x570 DUP3 CALLER PUSH2 0x608 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x6D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x418 SWAP1 DUP5 SWAP1 PUSH2 0x6DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x612 PUSH2 0x441 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x52E JUMPI PUSH2 0x52E DUP2 PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x748 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x70B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7AF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x7C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x7F5 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x7ED JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x6D1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x578 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 SLOAD PUSH8 0x63014C2B566C3305 0xC6 SAR EQ 0xB4 PUSH22 0x33AFE0C0740F9DBE7479E50DCACE78BC64736F6C6343 STOP SMOD ADD STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODECOPY 0xBF 0xD0 0xF9 PUSH9 0xB26EAE9E67C4FD766 LOG3 0xE2 0x48 0x24 PUSH24 0xA72007CB0713DF5FD3BAD813A564736F6C63430007010033 ","sourceMap":"1071:1092:62:-:0;;;1365:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1365:127:62;;;;;;;-1:-1:-1;;;;;;1431:30:62;;;;;;;;1471:14;;;;;1071:1092;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"8158":[{"length":32,"start":932}],"8160":[{"length":32,"start":420}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061004c5760003560e01c806336390717146100515780638d928af814610098578063b6a46b3b146100c9578063c00396991461016f575b600080fd5b6100846004803603602081101561006757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610177565b604080519115158252519081900360200190f35b6100a06101a2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100a0600480360360208110156100df57600080fd5b8101906020810181356401000000008111156100fa57600080fd5b82018360208201111561010c57600080fd5b8035906020019184600183028401116401000000008311171561012e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506101c6945050505050565b6100a06103a2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000806101d16103a2565b6101d96101a2565b846040516101e6906103c6565b808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610258578181015183820152602001610240565b50505050905090810190601f1680156102855780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f0801580156102a8573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff811660008181526020818152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055805193845283820181815288519185019190915287519495507f59750620eb9a4ec5e0719f2a764a31cf79c10817ba43fd86384231337e71db94948694899490936060850192908601918190849084905b83811015610361578181015183820152602001610349565b50505050905090810190601f16801561038e5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a192915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610ab7806103d48339019056fe60e060405234801561001057600080fd5b50604051610ab7380380610ab78339818101604052606081101561003357600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005e57600080fd5b90830190602082018581111561007357600080fd5b825164010000000081118282018810171561008d57600080fd5b82525081516020918201929091019080838360005b838110156100ba5781810151838201526020016100a2565b50505050905090810190601f1680156100e75780820380516001836020036101000a031916815260200191505b50604052505030608052506001600160601b0319606083811b821660a05284901b1660c052805161011f906000906020840190610128565b505050506101bb565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061016957805160ff1916838001178555610196565b82800160010185558215610196579182015b8281111561019657825182559160200191906001019061017b565b506101a29291506101a6565b5090565b5b808211156101a257600081556001016101a7565b60805160a05160601c60c05160601c6108c06101f76000398061033e52806104c3528061050752508061041f5250806102c952506108c06000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638d928af81161005b5780638d928af814610195578063aaabadc5146101c6578063c0039699146101ce578063c1075329146101d65761007d565b806317d7de7c14610082578063851c1bb3146100ff5780638b6ca32c14610150575b600080fd5b61008a61020f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100c45781810151838201526020016100ac565b50505050905090810190601f1680156100f15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61013e6004803603602081101561011557600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b60408051918252519081900360200190f35b6101936004803603606081101561016657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610334565b005b61019d61041d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61019d610441565b61019d6104c1565b610193600480360360408110156101ec57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104e5565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156102b95780601f1061028e576101008083540402835291602001916102b9565b820191906000526020600020905b81548152906001019060200180831161029c57829003601f168201915b5050505050905090565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b61033c610532565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f43616e6e6f742073776565702042414c00000000000000000000000000000000604482015290519081900360640190fd5b61041873ffffffffffffffffffffffffffffffffffffffff8416838361057b565b505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061044b61041d565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6104ed610532565b61052e73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016838361057b565b5050565b60006105616000357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b90506105786105708233610608565b6101916106d1565b50565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104189084906106df565b6000610612610441565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561069e57600080fd5b505afa1580156106b2573d6000803e3d6000fd5b505050506040513d60208110156106c857600080fd5b50519392505050565b8161052e5761052e816107fb565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061074857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161070b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146107aa576040519150601f19603f3d011682016040523d82523d6000602084013e6107af565b606091505b509150915060008214156107c7573d6000803e3d6000fd5b6107f58151600014806107ed57508180602001905160208110156107ea57600080fd5b50515b6101a26106d1565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610578917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220b4546763014c2b566c3305c61d14b47533afe0c0740f9dbe7479e50dcace78bc64736f6c63430007010033a264697066735822122039bfd0f9680b26eae9e67c4fd766a3e2482477a72007cb0713df5fd3bad813a564736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x36390717 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0xB6A46B3B EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x16F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x84 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x177 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH2 0x1A2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1C6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x3A2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D1 PUSH2 0x3A2 JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x1A2 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD PUSH2 0x1E6 SWAP1 PUSH2 0x3C6 JUMP JUMPDEST DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x258 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x240 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x285 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x2A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 MLOAD SWAP4 DUP5 MSTORE DUP4 DUP3 ADD DUP2 DUP2 MSTORE DUP9 MLOAD SWAP2 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP8 MLOAD SWAP5 SWAP6 POP PUSH32 0x59750620EB9A4EC5E0719F2A764A31CF79C10817BA43FD86384231337E71DB94 SWAP5 DUP7 SWAP5 DUP10 SWAP5 SWAP1 SWAP4 PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 DUP7 ADD SWAP2 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x361 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x349 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x38E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xAB7 DUP1 PUSH2 0x3D4 DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xAB7 CODESIZE SUB DUP1 PUSH2 0xAB7 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD DUP1 MLOAD SWAP2 MLOAD SWAP4 SWAP6 SWAP3 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP ADDRESS PUSH1 0x80 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP5 SWAP1 SHL AND PUSH1 0xC0 MSTORE DUP1 MLOAD PUSH2 0x11F SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x128 JUMP JUMPDEST POP POP POP POP PUSH2 0x1BB JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x169 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x196 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x196 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x196 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x17B JUMP JUMPDEST POP PUSH2 0x1A2 SWAP3 SWAP2 POP PUSH2 0x1A6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1A7 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x8C0 PUSH2 0x1F7 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x33E MSTORE DUP1 PUSH2 0x4C3 MSTORE DUP1 PUSH2 0x507 MSTORE POP DUP1 PUSH2 0x41F MSTORE POP DUP1 PUSH2 0x2C9 MSTORE POP PUSH2 0x8C0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0xC1075329 EQ PUSH2 0x1D6 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x17D7DE7C EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x8B6CA32C EQ PUSH2 0x150 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x20F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x334 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19D PUSH2 0x41D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH2 0x441 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x4C1 JUMP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4E5 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2B9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x28E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2B9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x29C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x33C PUSH2 0x532 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742073776565702042414C00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x418 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44B PUSH2 0x41D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x532 JUMP JUMPDEST PUSH2 0x52E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x561 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST SWAP1 POP PUSH2 0x578 PUSH2 0x570 DUP3 CALLER PUSH2 0x608 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x6D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x418 SWAP1 DUP5 SWAP1 PUSH2 0x6DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x612 PUSH2 0x441 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x52E JUMPI PUSH2 0x52E DUP2 PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x748 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x70B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7AF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x7C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x7F5 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x7ED JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x6D1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x578 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 SLOAD PUSH8 0x63014C2B566C3305 0xC6 SAR EQ 0xB4 PUSH22 0x33AFE0C0740F9DBE7479E50DCACE78BC64736F6C6343 STOP SMOD ADD STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODECOPY 0xBF 0xD0 0xF9 PUSH9 0xB26EAE9E67C4FD766 LOG3 0xE2 0x48 0x24 PUSH24 0xA72007CB0713DF5FD3BAD813A564736F6C63430007010033 ","sourceMap":"1071:1092:62:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1710:137;;;;;;;;;;;;;;;;-1:-1:-1;1710:137:62;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1616:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1853:308;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1853:308:62;;-1:-1:-1;1853:308:62;;-1:-1:-1;;;;;1853:308:62:i;1498:112::-;;;:::i;1710:137::-;1810:30;;1787:4;1810:30;;;;;;;;;;;;;;1710:137::o;1616:88::-;1691:6;1616:88;:::o;1853:308::-;1916:15;1943:21;1986:18;:16;:18::i;:::-;2006:10;:8;:10::i;:::-;2018:4;1967:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2034:39:62;;;:22;:39;;;;;;;;;;;:46;;;;2076:4;2034:46;;;2095:35;;;;;;;;;;;;;;;;;;;;;;1943:80;;-1:-1:-1;2095:35:62;;1943:80;;2125:4;;2095:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2148:6;1853:308;-1:-1:-1;;1853:308:62:o;1498:112::-;1589:14;1498:112;:::o;-1:-1:-1:-;;;;;;;;:::o"},"methodIdentifiers":{"create(string)":"b6a46b3b","getBalancerToken()":"c0039699","getVault()":"8d928af8","isHolderFromFactory(address)":"36390717"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"balancerToken\",\"type\":\"address\"},{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract BALTokenHolder\",\"name\":\"balTokenHolder\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"BALTokenHolderCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"contract IBALTokenHolder\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"}],\"name\":\"isHolderFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BALTokenHolderFactory.sol\":\"BALTokenHolderFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0x1e5bca6b4fb897adc2458f65aa7abed8499dcf146ac5872c62544d91516867cb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faa81254fe029b7ccd05635d6919da30bcb2114026996d10f6b51fc0e1f5b850\",\"dweb:/ipfs/Qmax3d2kq51xjt6hjYgskuXSrsB3fBZ4LAxBPRDDzbg8XD\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0x6975f1e2199b1d9e4fff7133f9e9ab652e2f378d38551d33393eec50f459574a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2c4b81b8bb50d58afee844cdc06a04bca72b379f51eda3289a9cc4ff97a80dfc\",\"dweb:/ipfs/QmR1b9e6Ku7H3ea4yBGmUznqabtioTkktRWvhZFgRUZWy4\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol\":{\"keccak256\":\"0xeb9dca0126103531b1a848558e7295bcc99a1a75fb059ce93e91b665222af8f8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://40739f46fa7c7c0c301fa73b96d82a1b2f4580bc2321a700a3fde159500cd8f1\",\"dweb:/ipfs/QmZ6Hff3CUDQi4Et9Y2wkFz3wMHzjwpeAh97TaVYSgjiTm\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol\":{\"keccak256\":\"0xc7cc9a56051950e8e6121e89b701506465b8e7061aa3695cb0a0114e875c03e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d4f5a3ce36f4e29e137dbd79c9f5bb44c4eff236a80dd6192833bdc9bcb17e8\",\"dweb:/ipfs/QmdMDYkhWDfsBcr1qRGjqoogyn4dVYdYFZRSwfX3ST1Ahs\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0x6c48b193602f6d6407e8fca3389fb32264a91f1de8ec33db209694e3bf9d0d13\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1fa358f1537907cdd9f6b176f5a1effbbe9925429634038e9c533493ed824cab\",\"dweb:/ipfs/QmW1EcMLkMFuDKrPwWJ2qhBkmVzAUTVEMP75kw7D8XTjJf\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x773d0bf95fd51f7042cf5e20d1424aae24218c358ad71676c29878f76d81e7f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86d0397ef1443257ad7a49306f3f2bdd490f4a238d4d416373031b8262d211ee\",\"dweb:/ipfs/QmUHBu6gWfnhLEjQ3FCcbha6zUVZVfPFaNJMvnz9h8Prvy\"]},\"contracts/BALTokenHolder.sol\":{\"keccak256\":\"0xb936f1fbc189eb2808ca9bcee946c49c6ad1f74bce8e0a52ca04de7d044b273c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://389a375096bb7fd2f068aec63b00add80ce7cac5f7a636d168baf6e4ce49b3e3\",\"dweb:/ipfs/QmceaHRaLRhXfsDPH7vtGekAPs3w9yWVca4jH39ipYJjWd\"]},\"contracts/BALTokenHolderFactory.sol\":{\"keccak256\":\"0x6a39b4ba36883fccffb7aba968f47506f9da34fbba13083359b24ff6d87ee987\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6a3e7b85da409b6f08ecdd33e6c0bf5e16e8f7c5646a0432e038a0d5181581a0\",\"dweb:/ipfs/QmYiGqYU4Gf8UgtinQa6VGjzQ6FEQ8XtouVXAxTaCAYiqh\"]}},\"version\":1}"}},"contracts/BalancerQueries.sol":{"BalancerQueries":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"_vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"}],"name":"queryBatchSwap","outputs":[{"internalType":"int256[]","name":"assetDeltas","type":"int256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"}],"name":"queryExit","outputs":[{"internalType":"uint256","name":"bptIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"}],"name":"queryJoin","outputs":[{"internalType":"uint256","name":"bptOut","type":"uint256"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"}],"name":"querySwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c06040523480156200001157600080fd5b506040516200187c3803806200187c8339810160408190526200003491620000c9565b806001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200006e57600080fd5b505afa15801562000083573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000a99190620000c9565b6001600160601b0319606091821b811660805291901b1660a05262000108565b600060208284031215620000db578081fd5b8151620000e881620000ef565b9392505050565b6001600160a01b03811681146200010557600080fd5b50565b60805160601c60a05160601c611727620001556000398061010652806101c9528061039c528061045f5280610693528061080b52806108a75280610919525080610bf852506117276000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063e969f6b311610050578063e969f6b3146100a9578063f84d066e146100c9578063fbfa77cf146100e957610067565b80639ebbf05d1461006c578063c7b2c52c14610096575b600080fd5b61007f61007a3660046110ad565b6100fe565b60405161008d92919061165d565b60405180910390f35b61007f6100a43660046110ad565b610394565b6100bc6100b7366004611270565b610564565b60405161008d91906114e9565b6100dc6100d736600461113a565b6107cb565b60405161008d91906114a5565b6100f16108a5565b60405161008d919061155d565b6000606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c00927886040518263ffffffff1660e01b815260040161015d91906114e9565b604080518083038186803b15801561017457600080fd5b505afa158015610188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ac9190610f15565b509050606060006101c18987600001516108c9565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561022d57600080fd5b505afa158015610241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102659190611117565b90508373ffffffffffffffffffffffffffffffffffffffff166387ec68178b8b8b87878773ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b1580156102ce57600080fd5b505afa1580156102e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610306919061133a565b8e604001516040518863ffffffff1660e01b815260040161032d97969594939291906114f2565b600060405180830381600087803b15801561034757600080fd5b505af115801561035b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103839190810190611352565b909b909a5098505050505050505050565b6000606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c00927886040518263ffffffff1660e01b81526004016103f391906114e9565b604080518083038186803b15801561040a57600080fd5b505afa15801561041e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104429190610f15565b509050606060006104578987600001516108c9565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104c357600080fd5b505afa1580156104d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fb9190611117565b90508373ffffffffffffffffffffffffffffffffffffffff16636028bfd48b8b8b87878773ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b1580156102ce57600080fd5b604080516002808252606080830184526000939092919060208301908036833701905050905083604001518160008151811061059c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508360600151816001815181106105e857fe5b73ffffffffffffffffffffffffffffffffffffffff9290921660209283029190910190910152604080516001808252818301909252606091816020015b61062d610c1a565b8152602001906001900390816106255790505090506040518060a00160405280866000015181526020016000815260200160018152602001866080015181526020018660a001518152508160008151811061068457fe5b602002602001018190525060607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f84d066e87602001518486896040518563ffffffff1660e01b81526004016106f4949392919061157e565b600060405180830381600087803b15801561070e57600080fd5b505af1158015610722573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261074a919081019061101d565b905060008660200151600181111561075e57fe5b14156107aa5761078860008260018151811061077657fe5b602002602001015113156103e7610a3d565b8060018151811061079557fe5b602002602001015160000393505050506107c5565b806000815181106107b757fe5b602002602001015193505050505b92915050565b6040517ff84d066e00000000000000000000000000000000000000000000000000000000815260609073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063f84d066e9061084690889088908890889060040161157e565b600060405180830381600087803b15801561086057600080fd5b505af1158015610874573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261089c919081019061101d565b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b606060006060806108d985610a4f565b6040517ff94d466800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063f94d46689061094e9089906004016114e9565b60006040518083038186803b15801561096657600080fd5b505afa15801561097a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109a29190810190610f51565b825184519297509095509193506109b99190610aff565b60005b8251811015610a335760008382815181106109d357fe5b60200260200101519050610a2a8383815181106109ec57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610208610a3d565b506001016109bc565b5050509250929050565b81610a4b57610a4b81610b0c565b5050565b606080825167ffffffffffffffff81118015610a6a57600080fd5b50604051908082528060200260200182016040528015610a94578160200160208202803683370190505b50905060005b8351811015610af857610abf848281518110610ab257fe5b6020026020010151610b39565b828281518110610acb57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101610a9a565b5092915050565b610a4b8183146067610a3d565b610b36817f42414c0000000000000000000000000000000000000000000000000000000000610b5e565b50565b6000610b4482610bd9565b610b5657610b5182610bf3565b6107c5565b6107c5610bf6565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b73ffffffffffffffffffffffffffffffffffffffff161590565b90565b7f000000000000000000000000000000000000000000000000000000000000000090565b6040518060a0016040528060008019168152602001600081526020016000815260200160008152602001606081525090565b600082601f830112610c5c578081fd5b8135610c6f610c6a826116a5565b61167e565b818152915060208083019084810181840286018201871015610c9057600080fd5b60005b84811015610cb8578135610ca6816116cf565b84529282019290820190600101610c93565b505050505092915050565b600082601f830112610cd3578081fd5b8135610ce1610c6a826116a5565b818152915060208083019084810181840286018201871015610d0257600080fd5b60005b84811015610cb857813584529282019290820190600101610d05565b600082601f830112610d31578081fd5b8151610d3f610c6a826116a5565b818152915060208083019084810181840286018201871015610d6057600080fd5b60005b84811015610cb857815184529282019290820190600101610d63565b803580151581146107c557600080fd5b600082601f830112610d9f578081fd5b813567ffffffffffffffff811115610db5578182fd5b610dc86020601f19601f8401160161167e565b9150808252836020828501011115610ddf57600080fd5b8060208401602084013760009082016020015292915050565b80356107c5816116cf565b8035600281106107c557600080fd5b600060808284031215610e23578081fd5b610e2d608061167e565b9050813567ffffffffffffffff80821115610e4757600080fd5b610e5385838601610c4c565b83526020840135915080821115610e6957600080fd5b610e7585838601610cc3565b60208401526040840135915080821115610e8e57600080fd5b50610e9b84828501610d8f565b604083015250610eae8360608401610d7f565b606082015292915050565b600060808284031215610eca578081fd5b610ed4608061167e565b90508135610ee1816116cf565b8152610ef08360208401610d7f565b60208201526040820135610f03816116cf565b6040820152610eae8360608401610d7f565b60008060408385031215610f27578182fd5b8251610f32816116cf565b602084015190925060038110610f46578182fd5b809150509250929050565b600080600060608486031215610f65578081fd5b835167ffffffffffffffff80821115610f7c578283fd5b818601915086601f830112610f8f578283fd5b8151610f9d610c6a826116a5565b80828252602080830192508086018b828387028901011115610fbd578788fd5b8796505b84871015610fe8578051610fd4816116cf565b845260019690960195928101928101610fc1565b508901519097509350505080821115610fff578283fd5b5061100c86828701610d21565b925050604084015190509250925092565b6000602080838503121561102f578182fd5b825167ffffffffffffffff811115611045578283fd5b8301601f81018513611055578283fd5b8051611063610c6a826116a5565b818152838101908385018584028501860189101561107f578687fd5b8694505b838510156110a1578051835260019490940193918501918501611083565b50979650505050505050565b600080600080608085870312156110c2578182fd5b8435935060208501356110d4816116cf565b925060408501356110e4816116cf565b9150606085013567ffffffffffffffff8111156110ff578182fd5b61110b87828801610e12565b91505092959194509250565b600060208284031215611128578081fd5b8151611133816116cf565b9392505050565b60008060008060e0858703121561114f578182fd5b6111598686610e03565b9350602085013567ffffffffffffffff80821115611175578384fd5b818701915087601f830112611188578384fd5b611195610c6a83356116a5565b82358152602080820191908401865b853581101561122f578135860160a0601f19828f030112156111c4578889fd5b6111ce60a061167e565b6020820135815260408201356020820152606082013560408201526080820135606082015260a082013587811115611204578a8bfd5b6112138f602083860101610d8f565b60808301525085525060209384019391909101906001016111a4565b5090965050506040870135915080821115611248578384fd5b5061125587828801610c4c565b9250506112658660608701610eb9565b905092959194509250565b60008060a08385031215611282578182fd5b823567ffffffffffffffff80821115611299578384fd5b9084019060c082870312156112ac578384fd5b6112b660c061167e565b823581526112c78760208501610e03565b602082015260408301356112da816116cf565b60408201526112ec8760608501610df8565b60608201526080830135608082015260a08301358281111561130c578586fd5b61131888828601610d8f565b60a0830152508094505050506113318460208501610eb9565b90509250929050565b60006020828403121561134b578081fd5b5051919050565b60008060408385031215611364578182fd5b82519150602083015167ffffffffffffffff811115611381578182fd5b61138d85828601610d21565b9150509250929050565b6000815180845260208085019450808401835b838110156113dc57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016113aa565b509495945050505050565b6000815180845260208085019450808401835b838110156113dc578151875295820195908201906001016113fa565b60008151808452815b8181101561143b5760208185018101518683018201520161141f565b8181111561144c5782602083870101525b50601f01601f19169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b6020808252825182820181905260009190848201906040850190845b818110156114dd578351835292840192918401916001016114c1565b50909695505050505050565b90815260200190565b600088825273ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525060e0606083015261153160e08301876113e7565b8560808401528460a084015282810360c084015261154f8185611416565b9a9950505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600060e0820161158d876116c5565b868352602060e08185015281875180845261010093508386019150838382028701019350828901855b82811015611636578786037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000184528151805187528581015186880152604080820151908801526060808201519088015260809081015160a09188018290529061162281890183611416565b9750505092840192908401906001016115b6565b5050505050828103604084015261164d8186611397565b91505061089c6060830184611461565b60008382526040602083015261167660408301846113e7565b949350505050565b60405181810167ffffffffffffffff8111828210171561169d57600080fd5b604052919050565b600067ffffffffffffffff8211156116bb578081fd5b5060209081020190565b60028110610b3657fe5b73ffffffffffffffffffffffffffffffffffffffff81168114610b3657600080fdfea26469706673582212205a5a6d542f054e74217b98714cdefc049ab8b1a2a21c4c025eb7527002fb369d64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x187C CODESIZE SUB DUP1 PUSH3 0x187C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0xC9 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAD5C4648 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x83 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 PUSH3 0xA9 SWAP2 SWAP1 PUSH3 0xC9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH3 0x108 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xDB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0xE8 DUP2 PUSH3 0xEF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x1727 PUSH3 0x155 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x106 MSTORE DUP1 PUSH2 0x1C9 MSTORE DUP1 PUSH2 0x39C MSTORE DUP1 PUSH2 0x45F MSTORE DUP1 PUSH2 0x693 MSTORE DUP1 PUSH2 0x80B MSTORE DUP1 PUSH2 0x8A7 MSTORE DUP1 PUSH2 0x919 MSTORE POP DUP1 PUSH2 0xBF8 MSTORE POP PUSH2 0x1727 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xE969F6B3 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xE969F6B3 EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0xF84D066E EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xFBFA77CF EQ PUSH2 0xE9 JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x9EBBF05D EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0xC7B2C52C EQ PUSH2 0x96 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x10AD JUMP JUMPDEST PUSH2 0xFE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP3 SWAP2 SWAP1 PUSH2 0x165D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0xA4 CALLDATASIZE PUSH1 0x4 PUSH2 0x10AD JUMP JUMPDEST PUSH2 0x394 JUMP JUMPDEST PUSH2 0xBC PUSH2 0xB7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1270 JUMP JUMPDEST PUSH2 0x564 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH2 0xDC PUSH2 0xD7 CALLDATASIZE PUSH1 0x4 PUSH2 0x113A JUMP JUMPDEST PUSH2 0x7CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP2 SWAP1 PUSH2 0x14A5 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x8A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP2 SWAP1 PUSH2 0x155D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15D SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x188 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1AC SWAP2 SWAP1 PUSH2 0xF15 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x60 PUSH1 0x0 PUSH2 0x1C1 DUP10 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x8C9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2946C2B 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x241 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x265 SWAP2 SWAP1 PUSH2 0x1117 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x87EC6817 DUP12 DUP12 DUP12 DUP8 DUP8 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x306 SWAP2 SWAP1 PUSH2 0x133A JUMP JUMPDEST DUP15 PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32D SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x14F2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x347 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x383 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1352 JUMP JUMPDEST SWAP1 SWAP12 SWAP1 SWAP11 POP SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F3 SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x442 SWAP2 SWAP1 PUSH2 0xF15 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x60 PUSH1 0x0 PUSH2 0x457 DUP10 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x8C9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2946C2B 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x4FB SWAP2 SWAP1 PUSH2 0x1117 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6028BFD4 DUP12 DUP12 DUP12 DUP8 DUP8 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE PUSH1 0x0 SWAP4 SWAP1 SWAP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x40 ADD MLOAD DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x59C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP4 PUSH1 0x60 ADD MLOAD DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x5E8 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x62D PUSH2 0xC1A JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x625 JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP7 PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x80 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0xA0 ADD MLOAD DUP2 MSTORE POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x684 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF84D066E DUP8 PUSH1 0x20 ADD MLOAD DUP5 DUP7 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6F4 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x157E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x70E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x722 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x74A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x101D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x20 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x75E JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x7AA JUMPI PUSH2 0x788 PUSH1 0x0 DUP3 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x776 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SGT ISZERO PUSH2 0x3E7 PUSH2 0xA3D JUMP JUMPDEST DUP1 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x795 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 SUB SWAP4 POP POP POP POP PUSH2 0x7C5 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x7B7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF84D066E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xF84D066E SWAP1 PUSH2 0x846 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x157E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x860 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x874 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x89C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x101D JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP1 PUSH2 0x8D9 DUP6 PUSH2 0xA4F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF94D466800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xF94D4668 SWAP1 PUSH2 0x94E SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x966 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x97A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x9A2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xF51 JUMP JUMPDEST DUP3 MLOAD DUP5 MLOAD SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP2 SWAP4 POP PUSH2 0x9B9 SWAP2 SWAP1 PUSH2 0xAFF JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xA33 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x9D3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0xA2A DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x208 PUSH2 0xA3D JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x9BC JUMP JUMPDEST POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0xA4B JUMPI PUSH2 0xA4B DUP2 PUSH2 0xB0C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xA6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA94 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0xAF8 JUMPI PUSH2 0xABF DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xAB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xB39 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xACB JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0xA9A JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA4B DUP2 DUP4 EQ PUSH1 0x67 PUSH2 0xA3D JUMP JUMPDEST PUSH2 0xB36 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xB5E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB44 DUP3 PUSH2 0xBD9 JUMP JUMPDEST PUSH2 0xB56 JUMPI PUSH2 0xB51 DUP3 PUSH2 0xBF3 JUMP JUMPDEST PUSH2 0x7C5 JUMP JUMPDEST PUSH2 0x7C5 PUSH2 0xBF6 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xC5C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xC6F PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST PUSH2 0x167E JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0xC90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xCB8 JUMPI DUP2 CALLDATALOAD PUSH2 0xCA6 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xC93 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xCD3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCE1 PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0xD02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xCB8 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xD05 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xD31 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xD3F PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0xD60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xCB8 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xD63 JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xD9F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDB5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xDC8 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x167E JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xDDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x7C5 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE23 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE2D PUSH1 0x80 PUSH2 0x167E JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE53 DUP6 DUP4 DUP7 ADD PUSH2 0xC4C JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE75 DUP6 DUP4 DUP7 ADD PUSH2 0xCC3 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE9B DUP5 DUP3 DUP6 ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0xEAE DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xECA JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xED4 PUSH1 0x80 PUSH2 0x167E JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH2 0xEE1 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP2 MSTORE PUSH2 0xEF0 DUP4 PUSH1 0x20 DUP5 ADD PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH2 0xF03 DUP2 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xEAE DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF27 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0xF32 DUP2 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x3 DUP2 LT PUSH2 0xF46 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF65 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF7C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF8F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xF9D PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP12 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0xFBD JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0xFE8 JUMPI DUP1 MLOAD PUSH2 0xFD4 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0xFC1 JUMP JUMPDEST POP DUP10 ADD MLOAD SWAP1 SWAP8 POP SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0xFFF JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x100C DUP7 DUP3 DUP8 ADD PUSH2 0xD21 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x102F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1045 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x1055 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1063 PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x107F JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x10A1 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x1083 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x10C2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x10D4 DUP2 PUSH2 0x16CF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x10E4 DUP2 PUSH2 0x16CF JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x10FF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x110B DUP8 DUP3 DUP9 ADD PUSH2 0xE12 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1128 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1133 DUP2 PUSH2 0x16CF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xE0 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x114F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1159 DUP7 DUP7 PUSH2 0xE03 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1175 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1188 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1195 PUSH2 0xC6A DUP4 CALLDATALOAD PUSH2 0x16A5 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP2 SWAP1 DUP5 ADD DUP7 JUMPDEST DUP6 CALLDATALOAD DUP2 LT ISZERO PUSH2 0x122F JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH1 0xA0 PUSH1 0x1F NOT DUP3 DUP16 SUB ADD SLT ISZERO PUSH2 0x11C4 JUMPI DUP9 DUP10 REVERT JUMPDEST PUSH2 0x11CE PUSH1 0xA0 PUSH2 0x167E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 DUP3 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x1204 JUMPI DUP11 DUP12 REVERT JUMPDEST PUSH2 0x1213 DUP16 PUSH1 0x20 DUP4 DUP7 ADD ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP DUP6 MSTORE POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x11A4 JUMP JUMPDEST POP SWAP1 SWAP7 POP POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1248 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x1255 DUP8 DUP3 DUP9 ADD PUSH2 0xC4C JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1265 DUP7 PUSH1 0x60 DUP8 ADD PUSH2 0xEB9 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xA0 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1282 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1299 JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0xC0 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x12AC JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x12B6 PUSH1 0xC0 PUSH2 0x167E JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH2 0x12C7 DUP8 PUSH1 0x20 DUP6 ADD PUSH2 0xE03 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x12DA DUP2 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x12EC DUP8 PUSH1 0x60 DUP6 ADD PUSH2 0xDF8 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x130C JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x1318 DUP9 DUP3 DUP7 ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP DUP1 SWAP5 POP POP POP POP PUSH2 0x1331 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xEB9 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x134B JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1364 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD SWAP2 POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1381 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x138D DUP6 DUP3 DUP7 ADD PUSH2 0xD21 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13DC JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13AA JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13DC JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13FA JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x143B JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x141F JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x144C JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 MLOAD AND DUP4 MSTORE PUSH1 0x20 DUP3 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x40 DUP4 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x60 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x14DD JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x14C1 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP9 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0xE0 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1531 PUSH1 0xE0 DUP4 ADD DUP8 PUSH2 0x13E7 JUMP JUMPDEST DUP6 PUSH1 0x80 DUP5 ADD MSTORE DUP5 PUSH1 0xA0 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x154F DUP2 DUP6 PUSH2 0x1416 JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 ADD PUSH2 0x158D DUP8 PUSH2 0x16C5 JUMP JUMPDEST DUP7 DUP4 MSTORE PUSH1 0x20 PUSH1 0xE0 DUP2 DUP6 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH2 0x100 SWAP4 POP DUP4 DUP7 ADD SWAP2 POP DUP4 DUP4 DUP3 MUL DUP8 ADD ADD SWAP4 POP DUP3 DUP10 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1636 JUMPI DUP8 DUP7 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP8 MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP9 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP9 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP9 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD PUSH1 0xA0 SWAP2 DUP9 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x1622 DUP2 DUP10 ADD DUP4 PUSH2 0x1416 JUMP JUMPDEST SWAP8 POP POP POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x15B6 JUMP JUMPDEST POP POP POP POP POP DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x164D DUP2 DUP7 PUSH2 0x1397 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x89C PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1461 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1676 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x13E7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x169D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x16BB JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0xB36 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB36 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GAS GAS PUSH14 0x542F054E74217B98714CDEFC049A 0xB8 0xB1 LOG2 LOG2 SHR 0x4C MUL 0x5E 0xB7 MSTORE PUSH17 0x2FB369D64736F6C634300070100330000 ","sourceMap":"1600:4665:63:-:0;;;1701:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1741:6;-1:-1:-1;;;;;1741:11:63;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1450:12:60;;;;;;;;1766:14:63;;;;::::1;::::0;1600:4665;;345:293:-1;;475:2;463:9;454:7;450:23;446:32;443:2;;;-1:-1;;481:12;443:2;104:6;98:13;116:48;158:5;116:48;:::i;:::-;533:89;437:201;-1:-1;;;437:201::o;1394:147::-;-1:-1;;;;;1328:54;;1468:50;;1458:2;;1532:1;;1522:12;1458:2;1452:89;:::o;:::-;1600:4665:63;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"7919":[{"length":32,"start":3064}],"8271":[{"length":32,"start":262},{"length":32,"start":457},{"length":32,"start":924},{"length":32,"start":1119},{"length":32,"start":1683},{"length":32,"start":2059},{"length":32,"start":2215},{"length":32,"start":2329}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c8063e969f6b311610050578063e969f6b3146100a9578063f84d066e146100c9578063fbfa77cf146100e957610067565b80639ebbf05d1461006c578063c7b2c52c14610096575b600080fd5b61007f61007a3660046110ad565b6100fe565b60405161008d92919061165d565b60405180910390f35b61007f6100a43660046110ad565b610394565b6100bc6100b7366004611270565b610564565b60405161008d91906114e9565b6100dc6100d736600461113a565b6107cb565b60405161008d91906114a5565b6100f16108a5565b60405161008d919061155d565b6000606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c00927886040518263ffffffff1660e01b815260040161015d91906114e9565b604080518083038186803b15801561017457600080fd5b505afa158015610188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ac9190610f15565b509050606060006101c18987600001516108c9565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561022d57600080fd5b505afa158015610241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102659190611117565b90508373ffffffffffffffffffffffffffffffffffffffff166387ec68178b8b8b87878773ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b1580156102ce57600080fd5b505afa1580156102e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610306919061133a565b8e604001516040518863ffffffff1660e01b815260040161032d97969594939291906114f2565b600060405180830381600087803b15801561034757600080fd5b505af115801561035b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103839190810190611352565b909b909a5098505050505050505050565b6000606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c00927886040518263ffffffff1660e01b81526004016103f391906114e9565b604080518083038186803b15801561040a57600080fd5b505afa15801561041e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104429190610f15565b509050606060006104578987600001516108c9565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104c357600080fd5b505afa1580156104d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fb9190611117565b90508373ffffffffffffffffffffffffffffffffffffffff16636028bfd48b8b8b87878773ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b1580156102ce57600080fd5b604080516002808252606080830184526000939092919060208301908036833701905050905083604001518160008151811061059c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508360600151816001815181106105e857fe5b73ffffffffffffffffffffffffffffffffffffffff9290921660209283029190910190910152604080516001808252818301909252606091816020015b61062d610c1a565b8152602001906001900390816106255790505090506040518060a00160405280866000015181526020016000815260200160018152602001866080015181526020018660a001518152508160008151811061068457fe5b602002602001018190525060607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f84d066e87602001518486896040518563ffffffff1660e01b81526004016106f4949392919061157e565b600060405180830381600087803b15801561070e57600080fd5b505af1158015610722573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261074a919081019061101d565b905060008660200151600181111561075e57fe5b14156107aa5761078860008260018151811061077657fe5b602002602001015113156103e7610a3d565b8060018151811061079557fe5b602002602001015160000393505050506107c5565b806000815181106107b757fe5b602002602001015193505050505b92915050565b6040517ff84d066e00000000000000000000000000000000000000000000000000000000815260609073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063f84d066e9061084690889088908890889060040161157e565b600060405180830381600087803b15801561086057600080fd5b505af1158015610874573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261089c919081019061101d565b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b606060006060806108d985610a4f565b6040517ff94d466800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063f94d46689061094e9089906004016114e9565b60006040518083038186803b15801561096657600080fd5b505afa15801561097a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109a29190810190610f51565b825184519297509095509193506109b99190610aff565b60005b8251811015610a335760008382815181106109d357fe5b60200260200101519050610a2a8383815181106109ec57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610208610a3d565b506001016109bc565b5050509250929050565b81610a4b57610a4b81610b0c565b5050565b606080825167ffffffffffffffff81118015610a6a57600080fd5b50604051908082528060200260200182016040528015610a94578160200160208202803683370190505b50905060005b8351811015610af857610abf848281518110610ab257fe5b6020026020010151610b39565b828281518110610acb57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101610a9a565b5092915050565b610a4b8183146067610a3d565b610b36817f42414c0000000000000000000000000000000000000000000000000000000000610b5e565b50565b6000610b4482610bd9565b610b5657610b5182610bf3565b6107c5565b6107c5610bf6565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b73ffffffffffffffffffffffffffffffffffffffff161590565b90565b7f000000000000000000000000000000000000000000000000000000000000000090565b6040518060a0016040528060008019168152602001600081526020016000815260200160008152602001606081525090565b600082601f830112610c5c578081fd5b8135610c6f610c6a826116a5565b61167e565b818152915060208083019084810181840286018201871015610c9057600080fd5b60005b84811015610cb8578135610ca6816116cf565b84529282019290820190600101610c93565b505050505092915050565b600082601f830112610cd3578081fd5b8135610ce1610c6a826116a5565b818152915060208083019084810181840286018201871015610d0257600080fd5b60005b84811015610cb857813584529282019290820190600101610d05565b600082601f830112610d31578081fd5b8151610d3f610c6a826116a5565b818152915060208083019084810181840286018201871015610d6057600080fd5b60005b84811015610cb857815184529282019290820190600101610d63565b803580151581146107c557600080fd5b600082601f830112610d9f578081fd5b813567ffffffffffffffff811115610db5578182fd5b610dc86020601f19601f8401160161167e565b9150808252836020828501011115610ddf57600080fd5b8060208401602084013760009082016020015292915050565b80356107c5816116cf565b8035600281106107c557600080fd5b600060808284031215610e23578081fd5b610e2d608061167e565b9050813567ffffffffffffffff80821115610e4757600080fd5b610e5385838601610c4c565b83526020840135915080821115610e6957600080fd5b610e7585838601610cc3565b60208401526040840135915080821115610e8e57600080fd5b50610e9b84828501610d8f565b604083015250610eae8360608401610d7f565b606082015292915050565b600060808284031215610eca578081fd5b610ed4608061167e565b90508135610ee1816116cf565b8152610ef08360208401610d7f565b60208201526040820135610f03816116cf565b6040820152610eae8360608401610d7f565b60008060408385031215610f27578182fd5b8251610f32816116cf565b602084015190925060038110610f46578182fd5b809150509250929050565b600080600060608486031215610f65578081fd5b835167ffffffffffffffff80821115610f7c578283fd5b818601915086601f830112610f8f578283fd5b8151610f9d610c6a826116a5565b80828252602080830192508086018b828387028901011115610fbd578788fd5b8796505b84871015610fe8578051610fd4816116cf565b845260019690960195928101928101610fc1565b508901519097509350505080821115610fff578283fd5b5061100c86828701610d21565b925050604084015190509250925092565b6000602080838503121561102f578182fd5b825167ffffffffffffffff811115611045578283fd5b8301601f81018513611055578283fd5b8051611063610c6a826116a5565b818152838101908385018584028501860189101561107f578687fd5b8694505b838510156110a1578051835260019490940193918501918501611083565b50979650505050505050565b600080600080608085870312156110c2578182fd5b8435935060208501356110d4816116cf565b925060408501356110e4816116cf565b9150606085013567ffffffffffffffff8111156110ff578182fd5b61110b87828801610e12565b91505092959194509250565b600060208284031215611128578081fd5b8151611133816116cf565b9392505050565b60008060008060e0858703121561114f578182fd5b6111598686610e03565b9350602085013567ffffffffffffffff80821115611175578384fd5b818701915087601f830112611188578384fd5b611195610c6a83356116a5565b82358152602080820191908401865b853581101561122f578135860160a0601f19828f030112156111c4578889fd5b6111ce60a061167e565b6020820135815260408201356020820152606082013560408201526080820135606082015260a082013587811115611204578a8bfd5b6112138f602083860101610d8f565b60808301525085525060209384019391909101906001016111a4565b5090965050506040870135915080821115611248578384fd5b5061125587828801610c4c565b9250506112658660608701610eb9565b905092959194509250565b60008060a08385031215611282578182fd5b823567ffffffffffffffff80821115611299578384fd5b9084019060c082870312156112ac578384fd5b6112b660c061167e565b823581526112c78760208501610e03565b602082015260408301356112da816116cf565b60408201526112ec8760608501610df8565b60608201526080830135608082015260a08301358281111561130c578586fd5b61131888828601610d8f565b60a0830152508094505050506113318460208501610eb9565b90509250929050565b60006020828403121561134b578081fd5b5051919050565b60008060408385031215611364578182fd5b82519150602083015167ffffffffffffffff811115611381578182fd5b61138d85828601610d21565b9150509250929050565b6000815180845260208085019450808401835b838110156113dc57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016113aa565b509495945050505050565b6000815180845260208085019450808401835b838110156113dc578151875295820195908201906001016113fa565b60008151808452815b8181101561143b5760208185018101518683018201520161141f565b8181111561144c5782602083870101525b50601f01601f19169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b6020808252825182820181905260009190848201906040850190845b818110156114dd578351835292840192918401916001016114c1565b50909695505050505050565b90815260200190565b600088825273ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525060e0606083015261153160e08301876113e7565b8560808401528460a084015282810360c084015261154f8185611416565b9a9950505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600060e0820161158d876116c5565b868352602060e08185015281875180845261010093508386019150838382028701019350828901855b82811015611636578786037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000184528151805187528581015186880152604080820151908801526060808201519088015260809081015160a09188018290529061162281890183611416565b9750505092840192908401906001016115b6565b5050505050828103604084015261164d8186611397565b91505061089c6060830184611461565b60008382526040602083015261167660408301846113e7565b949350505050565b60405181810167ffffffffffffffff8111828210171561169d57600080fd5b604052919050565b600067ffffffffffffffff8211156116bb578081fd5b5060209081020190565b60028110610b3657fe5b73ffffffffffffffffffffffffffffffffffffffff81168114610b3657600080fdfea26469706673582212205a5a6d542f054e74217b98714cdefc049ab8b1a2a21c4c025eb7527002fb369d64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xE969F6B3 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xE969F6B3 EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0xF84D066E EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xFBFA77CF EQ PUSH2 0xE9 JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x9EBBF05D EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0xC7B2C52C EQ PUSH2 0x96 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x10AD JUMP JUMPDEST PUSH2 0xFE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP3 SWAP2 SWAP1 PUSH2 0x165D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0xA4 CALLDATASIZE PUSH1 0x4 PUSH2 0x10AD JUMP JUMPDEST PUSH2 0x394 JUMP JUMPDEST PUSH2 0xBC PUSH2 0xB7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1270 JUMP JUMPDEST PUSH2 0x564 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH2 0xDC PUSH2 0xD7 CALLDATASIZE PUSH1 0x4 PUSH2 0x113A JUMP JUMPDEST PUSH2 0x7CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP2 SWAP1 PUSH2 0x14A5 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x8A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP2 SWAP1 PUSH2 0x155D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15D SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x188 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1AC SWAP2 SWAP1 PUSH2 0xF15 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x60 PUSH1 0x0 PUSH2 0x1C1 DUP10 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x8C9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2946C2B 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x241 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x265 SWAP2 SWAP1 PUSH2 0x1117 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x87EC6817 DUP12 DUP12 DUP12 DUP8 DUP8 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x306 SWAP2 SWAP1 PUSH2 0x133A JUMP JUMPDEST DUP15 PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32D SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x14F2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x347 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x383 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1352 JUMP JUMPDEST SWAP1 SWAP12 SWAP1 SWAP11 POP SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F3 SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x442 SWAP2 SWAP1 PUSH2 0xF15 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x60 PUSH1 0x0 PUSH2 0x457 DUP10 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x8C9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2946C2B 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x4FB SWAP2 SWAP1 PUSH2 0x1117 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6028BFD4 DUP12 DUP12 DUP12 DUP8 DUP8 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE PUSH1 0x0 SWAP4 SWAP1 SWAP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x40 ADD MLOAD DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x59C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP4 PUSH1 0x60 ADD MLOAD DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x5E8 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x62D PUSH2 0xC1A JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x625 JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP7 PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x80 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0xA0 ADD MLOAD DUP2 MSTORE POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x684 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF84D066E DUP8 PUSH1 0x20 ADD MLOAD DUP5 DUP7 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6F4 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x157E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x70E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x722 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x74A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x101D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x20 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x75E JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x7AA JUMPI PUSH2 0x788 PUSH1 0x0 DUP3 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x776 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SGT ISZERO PUSH2 0x3E7 PUSH2 0xA3D JUMP JUMPDEST DUP1 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x795 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 SUB SWAP4 POP POP POP POP PUSH2 0x7C5 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x7B7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF84D066E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xF84D066E SWAP1 PUSH2 0x846 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x157E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x860 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x874 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x89C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x101D JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP1 PUSH2 0x8D9 DUP6 PUSH2 0xA4F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF94D466800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xF94D4668 SWAP1 PUSH2 0x94E SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x966 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x97A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x9A2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xF51 JUMP JUMPDEST DUP3 MLOAD DUP5 MLOAD SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP2 SWAP4 POP PUSH2 0x9B9 SWAP2 SWAP1 PUSH2 0xAFF JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xA33 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x9D3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0xA2A DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x208 PUSH2 0xA3D JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x9BC JUMP JUMPDEST POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0xA4B JUMPI PUSH2 0xA4B DUP2 PUSH2 0xB0C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xA6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA94 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0xAF8 JUMPI PUSH2 0xABF DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xAB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xB39 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xACB JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0xA9A JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA4B DUP2 DUP4 EQ PUSH1 0x67 PUSH2 0xA3D JUMP JUMPDEST PUSH2 0xB36 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xB5E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB44 DUP3 PUSH2 0xBD9 JUMP JUMPDEST PUSH2 0xB56 JUMPI PUSH2 0xB51 DUP3 PUSH2 0xBF3 JUMP JUMPDEST PUSH2 0x7C5 JUMP JUMPDEST PUSH2 0x7C5 PUSH2 0xBF6 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xC5C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xC6F PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST PUSH2 0x167E JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0xC90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xCB8 JUMPI DUP2 CALLDATALOAD PUSH2 0xCA6 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xC93 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xCD3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCE1 PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0xD02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xCB8 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xD05 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xD31 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xD3F PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0xD60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xCB8 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xD63 JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xD9F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDB5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xDC8 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x167E JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xDDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x7C5 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE23 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE2D PUSH1 0x80 PUSH2 0x167E JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE53 DUP6 DUP4 DUP7 ADD PUSH2 0xC4C JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE75 DUP6 DUP4 DUP7 ADD PUSH2 0xCC3 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE9B DUP5 DUP3 DUP6 ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0xEAE DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xECA JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xED4 PUSH1 0x80 PUSH2 0x167E JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH2 0xEE1 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP2 MSTORE PUSH2 0xEF0 DUP4 PUSH1 0x20 DUP5 ADD PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH2 0xF03 DUP2 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xEAE DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF27 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0xF32 DUP2 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x3 DUP2 LT PUSH2 0xF46 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF65 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF7C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF8F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xF9D PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP12 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0xFBD JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0xFE8 JUMPI DUP1 MLOAD PUSH2 0xFD4 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0xFC1 JUMP JUMPDEST POP DUP10 ADD MLOAD SWAP1 SWAP8 POP SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0xFFF JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x100C DUP7 DUP3 DUP8 ADD PUSH2 0xD21 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x102F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1045 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x1055 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1063 PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x107F JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x10A1 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x1083 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x10C2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x10D4 DUP2 PUSH2 0x16CF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x10E4 DUP2 PUSH2 0x16CF JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x10FF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x110B DUP8 DUP3 DUP9 ADD PUSH2 0xE12 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1128 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1133 DUP2 PUSH2 0x16CF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xE0 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x114F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1159 DUP7 DUP7 PUSH2 0xE03 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1175 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1188 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1195 PUSH2 0xC6A DUP4 CALLDATALOAD PUSH2 0x16A5 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP2 SWAP1 DUP5 ADD DUP7 JUMPDEST DUP6 CALLDATALOAD DUP2 LT ISZERO PUSH2 0x122F JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH1 0xA0 PUSH1 0x1F NOT DUP3 DUP16 SUB ADD SLT ISZERO PUSH2 0x11C4 JUMPI DUP9 DUP10 REVERT JUMPDEST PUSH2 0x11CE PUSH1 0xA0 PUSH2 0x167E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 DUP3 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x1204 JUMPI DUP11 DUP12 REVERT JUMPDEST PUSH2 0x1213 DUP16 PUSH1 0x20 DUP4 DUP7 ADD ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP DUP6 MSTORE POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x11A4 JUMP JUMPDEST POP SWAP1 SWAP7 POP POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1248 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x1255 DUP8 DUP3 DUP9 ADD PUSH2 0xC4C JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1265 DUP7 PUSH1 0x60 DUP8 ADD PUSH2 0xEB9 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xA0 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1282 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1299 JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0xC0 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x12AC JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x12B6 PUSH1 0xC0 PUSH2 0x167E JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH2 0x12C7 DUP8 PUSH1 0x20 DUP6 ADD PUSH2 0xE03 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x12DA DUP2 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x12EC DUP8 PUSH1 0x60 DUP6 ADD PUSH2 0xDF8 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x130C JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x1318 DUP9 DUP3 DUP7 ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP DUP1 SWAP5 POP POP POP POP PUSH2 0x1331 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xEB9 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x134B JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1364 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD SWAP2 POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1381 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x138D DUP6 DUP3 DUP7 ADD PUSH2 0xD21 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13DC JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13AA JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13DC JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13FA JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x143B JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x141F JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x144C JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 MLOAD AND DUP4 MSTORE PUSH1 0x20 DUP3 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x40 DUP4 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x60 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x14DD JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x14C1 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP9 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0xE0 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1531 PUSH1 0xE0 DUP4 ADD DUP8 PUSH2 0x13E7 JUMP JUMPDEST DUP6 PUSH1 0x80 DUP5 ADD MSTORE DUP5 PUSH1 0xA0 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x154F DUP2 DUP6 PUSH2 0x1416 JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 ADD PUSH2 0x158D DUP8 PUSH2 0x16C5 JUMP JUMPDEST DUP7 DUP4 MSTORE PUSH1 0x20 PUSH1 0xE0 DUP2 DUP6 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH2 0x100 SWAP4 POP DUP4 DUP7 ADD SWAP2 POP DUP4 DUP4 DUP3 MUL DUP8 ADD ADD SWAP4 POP DUP3 DUP10 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1636 JUMPI DUP8 DUP7 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP8 MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP9 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP9 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP9 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD PUSH1 0xA0 SWAP2 DUP9 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x1622 DUP2 DUP10 ADD DUP4 PUSH2 0x1416 JUMP JUMPDEST SWAP8 POP POP POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x15B6 JUMP JUMPDEST POP POP POP POP POP DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x164D DUP2 DUP7 PUSH2 0x1397 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x89C PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1461 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1676 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x13E7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x169D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x16BB JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0xB36 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB36 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GAS GAS PUSH14 0x542F054E74217B98714CDEFC049A 0xB8 0xB1 LOG2 LOG2 SHR 0x4C MUL 0x5E 0xB7 MSTORE PUSH17 0x2FB369D64736F6C634300070100330000 ","sourceMap":"1600:4665:63:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4107:736;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4849;;;;;;:::i;:::-;;:::i;1793:1993::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3792:309::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1665:29::-;;;:::i;:::-;;;;;;;:::i;4107:736::-;4281:14;4297:26;4336:12;4354:5;:13;;;4368:6;4354:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4335:40;;;4386:25;4413:23;4440:53;4470:6;4478:7;:14;;;4440:29;:53::i;:::-;4385:108;;;;4503:36;4542:5;:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4503:71;;4617:4;4607:25;;;4646:6;4666;4686:9;4709:8;4731:15;4760:13;:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4810:7;:16;;;4607:229;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4607:229:63;;;;;;;;;;;;:::i;:::-;4585:251;;;;-1:-1:-1;4107:736:63;-1:-1:-1;;;;;;;;;4107:736:63:o;4849:::-;5023:13;5038:27;5078:12;5096:5;:13;;;5110:6;5096:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5077:40;;;5128:25;5155:23;5182:53;5212:6;5220:7;:14;;;5182:29;:53::i;:::-;5127:108;;;;5245:36;5284:5;:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5245:71;;5359:4;5349:25;;;5388:6;5408;5428:9;5451:8;5473:15;5502:13;:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1793:1993;2337:15;;;2350:1;2337:15;;;2312:22;2337:15;;;;;1936:7;;2312:22;;2337:15;2350:1;2337:15;;;;;;;;;;-1:-1:-1;2337:15:63;2312:40;;2374:10;:18;;;2362:6;2369:1;2362:9;;;;;;;;;;;;;:30;;;;;;;;;;;2414:10;:19;;;2402:6;2409:1;2402:9;;;;;;;;:31;;;;;:9;;;;;;;;;;;:31;2482:29;;;2509:1;2482:29;;;;;;;;;2444:35;;2482:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2444:67;;2532:212;;;;;;;;2575:10;:17;;;2532:212;;;;2620:1;2532:212;;;;2650:1;2532:212;;;;2673:10;:17;;;2532:212;;;;2714:10;:19;;;2532:212;;;2521:5;2527:1;2521:8;;;;;;;;;;;;;:223;;;;2755:27;2785:5;:20;;;2806:10;:15;;;2823:5;2830:6;2838:5;2785:59;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2785:59:63;;;;;;;;;;;;:::i;:::-;2755:89;-1:-1:-1;3191:24:63;3172:10;:15;;;:43;;;;;;;;;3168:612;;;3432:55;3459:1;3441:11;3453:1;3441:14;;;;;;;;;;;;;;:19;;14568:3:14;3432:8:63;:55::i;:::-;3517:11;3529:1;3517:14;;;;;;;;;;;;;;3516:15;;3501:31;;;;;;;3168:612;3754:11;3766:1;3754:14;;;;;;;;;;;;;;3739:30;;;;;1793:1993;;;;;:::o;3792:309::-;4046:48;;;;;4000:27;;4046:20;:5;:20;;;;:48;;4067:4;;4073:5;;4080:6;;4088:5;;4046:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4046:48:63;;;;;;;;;;;;:::i;:::-;4039:55;3792:309;-1:-1:-1;;;;;3792:309:63:o;1665:29::-;;;:::o;5591:672::-;5725:25;5752:23;5791:28;5829:30;5862:34;5881:14;5862:18;:34::i;:::-;5951:27;;;;;5829:67;;-1:-1:-1;5951:19:63;:5;:19;;;;:27;;5971:6;;5951:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5951:27:63;;;;;;;;;;;;:::i;:::-;6024:19;;6045:21;;5907:71;;-1:-1:-1;5907:71:63;;-1:-1:-1;5907:71:63;;-1:-1:-1;5988:79:63;;6024:19;5988:35;:79::i;:::-;6083:9;6078:179;6102:12;:19;6098:1;:23;6078:179;;;6142:12;6157;6170:1;6157:15;;;;;;;;;;;;;;6142:30;;6186:60;6204:14;6219:1;6204:17;;;;;;;;;;;;;;6195:26;;:5;:26;;;13684:3:14;6186:8:63;:60::i;:::-;-1:-1:-1;6123:3:63;;6078:179;;;;5591:672;;;;;;;:::o;918:101:14:-;987:9;982:34;;998:18;1006:9;998:7;:18::i;:::-;918:101;;:::o;2218:303:60:-;2293:15;2320:22;2358:6;:13;2345:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2345:27:60;;2320:52;;2387:9;2382:110;2406:6;:13;2402:1;:17;2382:110;;;2452:29;2471:6;2478:1;2471:9;;;;;;;;;;;;;;2452:18;:29::i;:::-;2440:6;2447:1;2440:9;;;;;;;;:41;;;;:9;;;;;;;;;;;:41;2421:3;;2382:110;;;-1:-1:-1;2508:6:60;2218:303;-1:-1:-1;;2218:303:60:o;920:131:42:-;998:46;1012:1;1007;:6;5804:3:14;998:8:42;:46::i;1437:126:14:-;1484:28;1492:9;1484:28;:7;:28::i;:::-;1437:126;:::o;1982:139:60:-;2047:6;2072:13;2079:5;2072:6;:13::i;:::-;:42;;2098:16;2108:5;2098:9;:16::i;:::-;2072:42;;;2088:7;:5;:7::i;1670:3378:14:-;4395:66;1732:18;4383:79;;;4601:66;4595:4;4588:80;4743:1;4737:4;4730:15;2871:2;2904:18;;;2949;;;2876:4;2945:29;;;3747:1;3838:14;2856:18;;;;3827:26;;;;2997:18;;;;3044;;;3040:29;;3859:2;3855:17;3823:50;3737:4;3743:18;;;;;;3733:29;3729:2;3725:38;3802:72;;;;3797:3;3793:82;4810:4;4803:26;1761:14;;;;;5036:3;;5026:14;1705:105:60;1781:22;;;;1705:105::o;2762:110::-;2858:5;2762:110::o;1528:76::-;1592:5;1528:76;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;462:752::-;;594:3;587:4;579:6;575:17;571:27;561:2;;-1:-1;;602:12;561:2;649:6;636:20;671:95;686:79;758:6;686:79;:::i;:::-;671:95;:::i;:::-;794:21;;;662:104;-1:-1;838:4;851:14;;;;826:17;;;940;;;931:27;;;;928:36;-1:-1;925:2;;;977:1;;967:12;925:2;1002:1;987:221;1012:6;1009:1;1006:13;987:221;;;5877:6;5864:20;5889:48;5931:5;5889:48;:::i;:::-;1080:65;;1159:14;;;;1187;;;;1034:1;1027:9;987:221;;;991:14;;;;;554:660;;;;:::o;3602:707::-;;3719:3;3712:4;3704:6;3700:17;3696:27;3686:2;;-1:-1;;3727:12;3686:2;3774:6;3761:20;3796:80;3811:64;3868:6;3811:64;:::i;3796:80::-;3904:21;;;3787:89;-1:-1;3948:4;3961:14;;;;3936:17;;;4050;;;4041:27;;;;4038:36;-1:-1;4035:2;;;4087:1;;4077:12;4035:2;4112:1;4097:206;4122:6;4119:1;4116:13;4097:206;;;12353:20;;4190:50;;4254:14;;;;4282;;;;4144:1;4137:9;4097:206;;4335:722;;4463:3;4456:4;4448:6;4444:17;4440:27;4430:2;;-1:-1;;4471:12;4430:2;4511:6;4505:13;4533:80;4548:64;4605:6;4548:64;:::i;4533:80::-;4641:21;;;4524:89;-1:-1;4685:4;4698:14;;;;4673:17;;;4787;;;4778:27;;;;4775:36;-1:-1;4772:2;;;4824:1;;4814:12;4772:2;4849:1;4834:217;4859:6;4856:1;4853:13;4834:217;;;12501:13;;4927:61;;5002:14;;;;5030;;;;4881:1;4874:9;4834:217;;5065:124;5129:20;;36496:13;;36489:21;39062:32;;39052:2;;39108:1;;39098:12;5334:440;;5435:3;5428:4;5420:6;5416:17;5412:27;5402:2;;-1:-1;;5443:12;5402:2;5490:6;5477:20;33000:18;32992:6;32989:30;32986:2;;;-1:-1;;33022:12;32986:2;5512:64;33163:4;-1:-1;;5428:4;33080:6;33076:17;33072:33;33153:15;5512:64;:::i;:::-;5503:73;;5596:6;5589:5;5582:21;5700:3;33163:4;5691:6;5624;5682:16;;5679:25;5676:2;;;5717:1;;5707:12;5676:2;38177:6;33163:4;5624:6;5620:17;33163:4;5658:5;5654:16;38154:30;38233:1;38215:16;;;33163:4;38215:16;38208:27;5658:5;5395:379;-1:-1;;5395:379::o;5782:160::-;5864:20;;5889:48;5864:20;5889:48;:::i;6510:156::-;6590:20;;39948:1;39938:12;;39928:2;;39964:1;;39954:12;7915:1120;;8037:4;8025:9;8020:3;8016:19;8012:30;8009:2;;;-1:-1;;8045:12;8009:2;8073:20;8037:4;8073:20;:::i;:::-;8064:29;;8158:17;8145:31;8196:18;;8188:6;8185:30;8182:2;;;8173:1;;8218:12;8182:2;8263:89;8348:3;8339:6;8328:9;8324:22;8263:89;:::i;:::-;8245:16;8238:115;8451:2;8440:9;8436:18;8423:32;8409:46;;8196:18;8467:6;8464:30;8461:2;;;8173:1;;8497:12;8461:2;8542:74;8612:3;8603:6;8592:9;8588:22;8542:74;:::i;:::-;8451:2;8528:5;8524:16;8517:100;8710:2;8699:9;8695:18;8682:32;8668:46;;8196:18;8726:6;8723:30;8720:2;;;8173:1;;8756:12;8720:2;;8801:58;8855:3;8846:6;8835:9;8831:22;8801:58;:::i;:::-;8710:2;8787:5;8783:16;8776:84;;8967:46;9009:3;8934:2;8989:9;8985:22;8967:46;:::i;:::-;8934:2;8953:5;8949:16;8942:72;8003:1032;;;;:::o;9077:799::-;;9198:4;9186:9;9181:3;9177:19;9173:30;9170:2;;;-1:-1;;9206:12;9170:2;9234:20;9198:4;9234:20;:::i;:::-;9225:29;;85:6;72:20;97:33;124:5;97:33;:::i;:::-;9313:75;;9497:46;9539:3;9464:2;9515:22;;9497:46;:::i;:::-;9464:2;9483:5;9479:16;9472:72;9610:2;9676:9;9672:22;358:20;383:41;418:5;383:41;:::i;:::-;9610:2;9625:16;;9618:83;9808:46;9850:3;9775:2;9826:22;;9808:46;:::i;12564:445::-;;;12719:2;12707:9;12698:7;12694:23;12690:32;12687:2;;;-1:-1;;12725:12;12687:2;226:6;220:13;238:33;265:5;238:33;:::i;:::-;12888:2;12961:22;;6424:13;12777:74;;-1:-1;39834:1;39824:12;;39814:2;;-1:-1;;39840:12;39814:2;12896:97;;;;12681:328;;;;;:::o;13016:823::-;;;;13230:2;13218:9;13209:7;13205:23;13201:32;13198:2;;;-1:-1;;13236:12;13198:2;13287:17;13281:24;13325:18;;13317:6;13314:30;13311:2;;;-1:-1;;13347:12;13311:2;13464:6;13453:9;13449:22;;;1391:3;1384:4;1376:6;1372:17;1368:27;1358:2;;-1:-1;;1399:12;1358:2;1439:6;1433:13;1461:95;1476:79;1548:6;1476:79;:::i;1461:95::-;1562:16;1598:6;1591:5;1584:21;1628:4;;1645:3;1641:14;1634:21;;1628:4;1620:6;1616:17;1750:3;1628:4;;1734:6;1730:17;1620:6;1721:27;;1718:36;1715:2;;;-1:-1;;1757:12;1715:2;-1:-1;1783:10;;1777:232;1802:6;1799:1;1796:13;1777:232;;;6048:6;6042:13;6060:48;6102:5;6060:48;:::i;:::-;1870:76;;1824:1;1817:9;;;;;1960:14;;;;1988;;1777:232;;;-1:-1;13524:18;;13518:25;13367:114;;-1:-1;13518:25;-1:-1;;;13552:30;;;13549:2;;;-1:-1;;13585:12;13549:2;;13615:89;13696:7;13687:6;13676:9;13672:22;13615:89;:::i;:::-;13605:99;;;13741:2;13795:9;13791:22;12501:13;13749:74;;13192:647;;;;;:::o;13846:390::-;;13985:2;;13973:9;13964:7;13960:23;13956:32;13953:2;;;-1:-1;;13991:12;13953:2;14042:17;14036:24;14080:18;14072:6;14069:30;14066:2;;;-1:-1;;14102:12;14066:2;14188:22;;2160:4;2148:17;;2144:27;-1:-1;2134:2;;-1:-1;;2175:12;2134:2;2215:6;2209:13;2237:79;2252:63;2308:6;2252:63;:::i;2237:79::-;2344:21;;;2401:14;;;;2376:17;;;2490;;;2481:27;;;;2478:36;-1:-1;2475:2;;;-1:-1;;2517:12;2475:2;-1:-1;2543:10;;2537:216;2562:6;2559:1;2556:13;2537:216;;;6750:13;;2630:60;;2584:1;2577:9;;;;;2704:14;;;;2732;;2537:216;;;-1:-1;14122:98;13947:289;-1:-1;;;;;;;13947:289::o;14243:769::-;;;;;14431:3;14419:9;14410:7;14406:23;14402:33;14399:2;;;-1:-1;;14438:12;14399:2;5276:6;5263:20;14490:63;;14590:2;14633:9;14629:22;72:20;97:33;124:5;97:33;:::i;:::-;14598:63;-1:-1;14698:2;14737:22;;72:20;97:33;72:20;97:33;:::i;:::-;14706:63;-1:-1;14834:2;14819:18;;14806:32;14858:18;14847:30;;14844:2;;;-1:-1;;14880:12;14844:2;14910:86;14988:7;14979:6;14968:9;14964:22;14910:86;:::i;:::-;14900:96;;;14393:619;;;;;;;:::o;15795:325::-;;15941:2;15929:9;15920:7;15916:23;15912:32;15909:2;;;-1:-1;;15947:12;15909:2;6235:6;6229:13;6247:64;6305:5;6247:64;:::i;:::-;15999:105;15903:217;-1:-1;;;15903:217::o;16127:1071::-;;;;;16423:3;16411:9;16402:7;16398:23;16394:33;16391:2;;;-1:-1;;16430:12;16391:2;16492:66;16550:7;16526:22;16492:66;:::i;:::-;16482:76;;16623:2;16612:9;16608:18;16595:32;16647:18;;16639:6;16636:30;16633:2;;;-1:-1;;16669:12;16633:2;16791:6;16780:9;16776:22;;;2953:3;2946:4;2938:6;2934:17;2930:27;2920:2;;-1:-1;;2961:12;2920:2;3030:111;3045:95;3008:6;2995:20;3045:95;:::i;3030:111::-;2995:20;;3169:21;;16623:2;3226:14;;;;3147:16;3201:17;;-1:-1;3306:264;3008:6;2995:20;3328:1;3325:13;3306:264;;;3414:3;3401:17;3205:6;3389:30;6966:4;-1:-1;;3389:30;6949:3;6945:19;;6941:30;6938:2;;;-1:-1;;6974:12;6938:2;7002:20;6966:4;7002:20;:::i;:::-;16623:2;3389:30;;5263:20;7088:16;7081:75;7279:22;3389:30;7279:22;12353:20;16623:2;7244:5;7240:16;7233:75;7432:22;3389:30;7432:22;12353:20;7279:22;7397:5;7393:16;7386:75;7578:22;3389:30;7578:22;12353:20;7432:22;7543:5;7539:16;7532:75;6966:4;3389:30;7685:19;7672:33;16647:18;7717:6;7714:30;7711:2;;;-1:-1;;7747:12;7711:2;7792:58;7846:3;16623:2;7837:6;3389:30;7822:22;;7792:58;:::i;:::-;7578:22;7774:16;;7767:84;-1:-1;3426:81;;-1:-1;16623:2;3521:14;;;;3549;;;;;3353:1;3346:9;3306:264;;;-1:-1;16689:119;;-1:-1;;;7279:22;16858:18;;16845:32;;-1:-1;16886:30;;;16883:2;;;-1:-1;;16919:12;16883:2;;16949:93;17034:7;17025:6;17014:9;17010:22;16949:93;:::i;:::-;16939:103;;;17097:85;17174:7;7432:22;17154:9;17150:22;17097:85;:::i;:::-;17087:95;;16385:813;;;;;;;:::o;17205:573::-;;;17386:3;17374:9;17365:7;17361:23;17357:33;17354:2;;;-1:-1;;17393:12;17354:2;17451:17;17438:31;17489:18;;17481:6;17478:30;17475:2;;;-1:-1;;17511:12;17475:2;17590:22;;;;11195:4;11174:19;;;11170:30;11167:2;;;-1:-1;;11203:12;11167:2;11231:20;11195:4;11231:20;:::i;:::-;5276:6;5263:20;11317:16;11310:75;11479:62;11537:3;11446:2;11517:9;11513:22;11479:62;:::i;:::-;11446:2;11465:5;11461:16;11454:88;11606:2;11679:9;11675:22;5864:20;5889:48;5931:5;5889:48;:::i;:::-;11606:2;11621:16;;11614:90;11802:64;11862:3;11769:2;11838:22;;11802:64;:::i;:::-;11769:2;11788:5;11784:16;11777:90;11930:3;11989:9;11985:22;12353:20;11930:3;11950:5;11946:16;11939:75;17386:3;12096:9;12092:19;12079:33;17489:18;12124:6;12121:30;12118:2;;;-1:-1;;12154:12;12118:2;12199:58;12253:3;12244:6;12233:9;12229:22;12199:58;:::i;:::-;17386:3;12185:5;12181:16;12174:84;;17531:91;;;;;;17677:85;17754:7;11446:2;17734:9;17730:22;17677:85;:::i;:::-;17667:95;;17348:430;;;;;:::o;17785:263::-;;17900:2;17888:9;17879:7;17875:23;17871:32;17868:2;;;-1:-1;;17906:12;17868:2;-1:-1;12501:13;;17862:186;-1:-1;17862:186::o;18055:528::-;;;18212:2;18200:9;18191:7;18187:23;18183:32;18180:2;;;-1:-1;;18218:12;18180:2;12507:6;12501:13;18270:74;;18402:2;18391:9;18387:18;18381:25;18426:18;18418:6;18415:30;18412:2;;;-1:-1;;18448:12;18412:2;18478:89;18559:7;18550:6;18539:9;18535:22;18478:89;:::i;:::-;18468:99;;;18174:409;;;;;:::o;19851:765::-;;20074:5;33980:12;35247:6;35242:3;35235:19;35284:4;;35279:3;35275:14;20086:93;;35284:4;20265:5;33315:14;-1:-1;20304:290;20329:6;20326:1;20323:13;20304:290;;;20390:13;;37246:42;37235:54;24334:65;;18774:14;;;;34715;;;;20351:1;20344:9;20304:290;;;-1:-1;20600:10;;19990:626;-1:-1;;;;;19990:626::o;22549:690::-;;22742:5;33980:12;35247:6;35242:3;35235:19;35284:4;;35279:3;35275:14;22754:93;;35284:4;22918:5;33315:14;-1:-1;22957:260;22982:6;22979:1;22976:13;22957:260;;;23043:13;;23409:37;;19420:14;;;;34715;;;;23004:1;22997:9;22957:260;;23578:323;;23710:5;33980:12;35247:6;35242:3;35235:19;-1:-1;38322:101;38336:6;38333:1;38330:13;38322:101;;;35284:4;38403:11;;;;;38397:18;38384:11;;;;;38377:39;38351:10;38322:101;;;38438:6;38435:1;38432:13;38429:2;;;-1:-1;35284:4;38494:6;35279:3;38485:16;;38478:27;38429:2;-1:-1;38614:2;38594:14;-1:-1;;38590:28;23857:39;;;;35284:4;23857:39;;23658:243;-1:-1;;23658:243::o;26033:837::-;37246:42;;26264:16;26258:23;37235:54;19532:3;19525:45;26444:4;26437:5;26433:16;26427:23;36496:13;36489:21;26444:4;26502:3;26498:14;23302:34;37246:42;26597:4;26590:5;26586:16;26580:23;37235:54;26597:4;26677:3;26673:14;19525:45;;26780:4;26773:5;26769:16;26763:23;36496:13;36489:21;26780:4;26838:3;26834:14;23302:34;26163:707;;:::o;27107:366::-;27282:2;27296:47;;;33980:12;;27267:18;;;35235:19;;;27107:366;;27282:2;33315:14;;;;35275;;;;27107:366;21056:257;21081:6;21078:1;21075:13;21056:257;;;21142:13;;23409:37;;34715:14;;;;18952;;;;21103:1;21096:9;21056:257;;;-1:-1;27349:114;;27253:220;-1:-1;;;;;;27253:220::o;27480:222::-;23409:37;;;27607:2;27592:18;;27578:124::o;27709:1124::-;;23439:5;23416:3;23409:37;37246:42;;36306:5;37235:54;28237:2;28226:9;28222:18;19525:45;37246:42;36306:5;37235:54;28320:2;28309:9;28305:18;19525:45;;28072:3;28357:2;28346:9;28342:18;28335:48;28397:108;28072:3;28061:9;28057:19;28491:6;28397:108;:::i;:::-;23439:5;28584:3;28573:9;28569:19;23409:37;23439:5;28668:3;28657:9;28653:19;23409:37;28722:9;28716:4;28712:20;28706:3;28695:9;28691:19;28684:49;28747:76;28818:4;28809:6;28747:76;:::i;:::-;28739:84;28043:790;-1:-1;;;;;;;;;;28043:790::o;28840:252::-;37246:42;37235:54;;;;24334:65;;28982:2;28967:18;;28953:139::o;29099:1156::-;;29562:3;29551:9;29547:19;37037:46;37077:5;37037:46;:::i;:::-;38046:37;24663:3;24656:61;29692:2;29562:3;29692:2;29681:9;29677:18;29670:48;29732:170;21700:5;33980:12;35247:6;35242:3;35235:19;35275:14;;;;29551:9;35275:14;21712:124;;35275:14;29692:2;21893:6;21889:17;29551:9;21880:27;;21868:39;;29692:2;22009:5;33315:14;-1:-1;22048:423;22073:6;22070:1;22067:13;22048:423;;;22125:20;;;;;22113:33;;22174:13;;25122:23;;23409:37;;25290:16;;;25284:23;25361:14;;;23409:37;25464:4;25453:16;;;25447:23;25524:14;;;23409:37;25620:4;25609:16;;;25603:23;25680:14;;;23409:37;25778:4;25767:16;;;25761:23;25054:4;25804:14;;;25797:38;;;25761:23;25850:71;25045:14;;;25761:23;25850:71;:::i;:::-;22194:134;-1:-1;;;22450:14;;;;34715;;;;22095:1;22088:9;22048:423;;;22052:14;;;;;29950:9;29944:4;29940:20;25464:4;29924:9;29920:18;29913:48;29975:123;30093:4;30084:6;29975:123;:::i;:::-;29967:131;;;30109:136;25620:4;30230:9;30226:18;30217:6;30109:136;:::i;30491:481::-;;23439:5;23416:3;23409:37;30696:2;30814;30803:9;30799:18;30792:48;30854:108;30696:2;30685:9;30681:18;30948:6;30854:108;:::i;:::-;30846:116;30667:305;-1:-1;;;;30667:305::o;30979:256::-;31041:2;31035:9;31067:17;;;31142:18;31127:34;;31163:22;;;31124:62;31121:2;;;31199:1;;31189:12;31121:2;31041;31208:22;31019:216;;-1:-1;31019:216::o;31242:319::-;;31416:18;31408:6;31405:30;31402:2;;;-1:-1;;31438:12;31402:2;-1:-1;31483:4;31471:17;;;31536:15;;31339:222::o;38631:104::-;38713:1;38706:5;38703:12;38693:2;;38719:9;38742:117;37246:42;38829:5;37235:54;38804:5;38801:35;38791:2;;38850:1;;38840:12"},"methodIdentifiers":{"queryBatchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool))":"f84d066e","queryExit(bytes32,address,address,(address[],uint256[],bytes,bool))":"c7b2c52c","queryJoin(bytes32,address,address,(address[],uint256[],bytes,bool))":"9ebbf05d","querySwap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool))":"e969f6b3","vault()":"fbfa77cf"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"_vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"}],\"name\":\"queryBatchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"assetDeltas\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"queryExit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"queryJoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"}],\"name\":\"querySwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract simply builds on top of the Balancer V2 architecture to provide useful helpers to users. It connects different functionalities of the protocol components to allow accessing information that would have required a more cumbersome setup if we wanted to provide these already built-in.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BalancerQueries.sol\":\"BalancerQueries\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol\":{\"keccak256\":\"0x18a8405e00b152fa954b5a9952ac449f08c7715d7df762a165d9ab8976233690\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8ffd269f55603d8a1a173f73f099008ab2932f8605fec33e76181c70941a61f8\",\"dweb:/ipfs/QmUPWpFGUSxKfAGE2FeUqUWSCBCGBsgRqBNpp1EfE1YvKb\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0xd36229e6ac86c11d67c77af218720c36a2e44511c84635fd780f1a3b9ac78d75\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://70570fa1ae61157b1fe163c07f559ff42987723ad4971a624d9c3fa7de0c99e8\",\"dweb:/ipfs/QmZ97kZMpg9kypYQHCdGD4xoqs9a6PrEwumU4EWNogpzLh\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol\":{\"keccak256\":\"0x997616af454ac3b56c8377fc913a25c7b282dc95355f6251dd4283c2b6d4805e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://22479024819e8b6a7b19ecd910dd847ec1611924db4aa67070c419ef9aac4f07\",\"dweb:/ipfs/QmbfzphtRmBAB8KgbN2Q4DUqpLo9gEGm5QEUFWXSou1Yt7\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/BalancerQueries.sol\":{\"keccak256\":\"0x7dc3b7e866b3b1161d30c2529350dca0faa580eadde1bc3f2c2f6e3f30fdb926\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b1232040c6b1ee0492ac4b612fa0ffdd48cf69c510bc50cf612707bfd16b97f7\",\"dweb:/ipfs/QmeX4RU2cnZVD36ZmKyPBUJubQSjD5tDsC3gmZBzY21g9G\"]}},\"version\":1}"}},"contracts/BatchRelayerLibrary.sol":{"BatchRelayerLibrary":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IERC20","name":"wstETH","type":"address"},{"internalType":"contract IBalancerMinter","name":"minter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"int256[]","name":"limits","type":"int256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"batchSwap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum VaultActions.PoolKind","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"exitPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge[]","name":"gauges","type":"address[]"}],"name":"gaugeClaimRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"gaugeDeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"gaugeMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"gaugeSetMinterApproval","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"gaugeWithdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getEntrypoint","outputs":[{"internalType":"contract IBalancerRelayer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum VaultActions.PoolKind","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"joinPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"enum IVault.UserBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"}],"internalType":"struct IVault.UserBalanceOp[]","name":"ops","type":"tuple[]"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manageUserBalance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"relayer","type":"address"},{"internalType":"bool","name":"approved","type":"bool"},{"internalType":"bytes","name":"authorisation","type":"bytes"}],"name":"setRelayerApproval","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"stakeETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"stakeETHAndWrap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStaticATokenLM","name":"staticToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapAaveStaticToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapERC4626","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IReaperTokenVault","name":"vaultToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapReaperVaultToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUnbuttonToken","name":"wrapperToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapUnbuttonToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapWstETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20Permit","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"vaultPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20PermitDAI","name":"token","type":"address"},{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"vaultPermitDAI","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStaticATokenLM","name":"staticToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"fromUnderlying","type":"bool"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapAaveDynamicToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapERC4626","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IReaperTokenVault","name":"vaultToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapReaperVaultToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapStETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUnbuttonToken","name":"wrapperToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapUnbuttonToken","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101606040527fae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb50960e0523480156200003657600080fd5b50604051620059f3380380620059f3833981016040819052620000599162000209565b818184806001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009657600080fd5b505afa158015620000ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d191906200025c565b6001600160601b0319606091821b81166080529082901b1660a05260405181903090620000fe90620001fb565b6200010b92919062000282565b604051809103906000f08015801562000128573d6000803e3d6000fd5b506001600160601b0319606091821b811660c05292901b90911661010052506001600160a01b0381166200015e576000620001d5565b806001600160a01b031663c1fe3e486040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200019a57600080fd5b505af1158015620001af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d591906200025c565b6001600160601b0319606091821b81166101205291901b166101405250620002b5915050565b610787806200526c83390190565b6000806000606084860312156200021e578283fd5b83516200022b816200029c565b60208501519093506200023e816200029c565b604085015190925062000251816200029c565b809150509250925092565b6000602082840312156200026e578081fd5b81516200027b816200029c565b9392505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0381168114620002b257600080fd5b50565b60805160601c60a05160601c60c05160601c60e0516101005160601c6101205160601c6101405160601c614f15620003576000398061051952806105ad528061061352806109995280610a495280610b12528061299552806129ed525080610917528061096c5280610bda5280610cb95280612ab6525080610e4c5280611b0b5250806132965250806119b5525080611ab55280611c02525050614f156000f3fe6080604052600436106101c25760003560e01c806380db15bd116100f7578063b6d2473711610095578063e8210e3c11610064578063e8210e3c146103cb578063ecc02637146103de578063efe69108146103f1578063f3cab68514610404576101c2565b8063b6d2473714610372578063d293f29014610392578063d80952d5146103a5578063db4c0e91146103b8576101c2565b80638d928af8116100d15780638d928af8146103245780638fe4624f14610339578063959fc17a1461034c578063abf6d3991461035f576101c2565b806380db15bd146102eb5780638c57198b146102fe5780638d64cfbc14610311576101c2565b8063433b0865116101645780636d307ea81161013e5780636d307ea8146102875780637ab6e03c1461029a5780637bc008f5146102ad5780637fd0e5d5146102c0576101c2565b8063433b08651461024e578063611b90dd1461026157806365ca480414610274576101c2565b80631c982441116101a05780631c982441146102025780632cbec84e146102155780632e6272ea146102285780633f85d3901461023b576101c2565b80630e248fea146101c75780631089e5e3146101dc57806318369446146101ef575b600080fd5b6101da6101d5366004613cee565b610431565b005b6101da6101ea366004613c70565b6104cc565b6101da6101fd36600461432f565b6106b6565b6101da610210366004613b9e565b6108bf565b6101da610223366004613c70565b610bbc565b6101da61023636600461442b565b610cf0565b6101da610249366004613ca4565b610e19565b6101da61025c3660046141e9565b610ee2565b6101da61026f36600461413f565b611191565b6101da610282366004614199565b6112ac565b6101da61029536600461413f565b61149f565b6101da6102a83660046141e9565b6116c1565b6101da6102bb366004614199565b6117c7565b3480156102cc57600080fd5b506102d56119b3565b6040516102e29190614791565b60405180910390f35b6101da6102f9366004613be3565b6119d7565b6101da61030c366004613e8b565b611adb565b6101da61031f3660046140a6565b611b86565b34801561033057600080fd5b506102d5611c00565b6101da610347366004613f96565b611c24565b6101da61035a366004614025565b611e4e565b6101da61036d36600461413f565b611ecb565b34801561037e57600080fd5b506101da61038d366004614114565b612081565b6101da6103a036600461413f565b612127565b6101da6103b3366004613eee565b6123af565b6101da6103c6366004613b9e565b61293d565b6101da6103d936600461413f565b612aed565b6101da6103ec366004613dbe565b612db2565b6101da6103ff36600461413f565b612eaa565b34801561041057600080fd5b5061042461041f366004614519565b612f53565b6040516102e29190614ddc565b8060005b818110156104c65783838281811061044957fe5b905060200201602081019061045e9190613b66565b6001600160a01b03166384e9bd7e336040518263ffffffff1660e01b81526004016104899190614791565b600060405180830381600087803b1580156104a357600080fd5b505af11580156104b7573d6000803e3d6000fd5b50505050806001019050610435565b50505050565b6104d582612f65565b156104e6576104e382612fb0565b91505b6040517fb0e389000000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b0e389009061054e908690600401614ddc565b60206040518083038186803b15801561056657600080fd5b505afa15801561057a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059e9190614531565b90506105d36001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684612fdb565b6001600160a01b038416301461069e576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb9061064a90879085906004016148f1565b602060405180830381600087803b15801561066457600080fd5b505af1158015610678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069c9190613e6f565b505b6106a782612f65565b156104c6576104c68282613055565b336106c46020890189613b66565b6001600160a01b031614806106ed5750306106e26020890189613b66565b6001600160a01b0316145b6107125760405162461bcd60e51b815260040161070990614cac565b60405180910390fd5b60005b8a518110156107775760008b828151811061072c57fe5b602002602001015160600151905061074381612f65565b1561076e5761075181612fb0565b8c838151811061075d57fe5b602002602001015160600181815250505b50600101610715565b506060610782611c00565b6001600160a01b031663945bcec9858e8e8e8e8e8e8e8e6040518a63ffffffff1660e01b81526004016107bc989796959493929190614ba3565b6000604051808303818588803b1580156107d557600080fd5b505af11580156107e9573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526108129190810190613d2e565b905060005b828110156108b05761083d84848381811061082e57fe5b90506040020160200135612f65565b6108595760405162461bcd60e51b815260040161070990614d1a565b6108a884848381811061086857fe5b905060400201602001356108a38487878681811061088257fe5b905060400201600001358151811061089657fe5b6020026020010151613068565b613055565b600101610817565b50505050505050505050505050565b6108c882612f65565b156108d9576108d682612fb0565b91505b6001600160a01b038416301461093c576001600160a01b03841633146109115760405162461bcd60e51b815260040161070990614cac565b61093c847f000000000000000000000000000000000000000000000000000000000000000084613082565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906109c3907f00000000000000000000000000000000000000000000000000000000000000009086906004016148f1565b602060405180830381600087803b1580156109dd57600080fd5b505af11580156109f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a159190613e6f565b506040517fea598cb00000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ea598cb090610a7e908690600401614ddc565b602060405180830381600087803b158015610a9857600080fd5b505af1158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190614531565b90506001600160a01b0384163014610b9d576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90610b4990879085906004016148f1565b602060405180830381600087803b158015610b6357600080fd5b505af1158015610b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9b9190613e6f565b505b610ba682612f65565b15610bb557610bb58282613055565b5050505050565b610bc582612f65565b15610bd657610bd382612fb0565b91505b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a1903eab84306040518363ffffffff1660e01b8152600401610c259190614791565b6020604051808303818588803b158015610c3e57600080fd5b505af1158015610c52573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c779190614531565b90506001600160a01b038416301461069e576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb9061064a90879085906004016148f1565b33610cfe6020870187613b66565b6001600160a01b03161480610d27575030610d1c6020870187613b66565b6001600160a01b0316145b610d435760405162461bcd60e51b815260040161070990614cac565b610d508660800151612f65565b15610d6857610d628660800151612fb0565b60808701525b6000610d72611c00565b6001600160a01b03166352bbbe2984898989896040518663ffffffff1660e01b8152600401610da49493929190614d51565b6020604051808303818588803b158015610dbd57600080fd5b505af1158015610dd1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610df69190614531565b9050610e0182612f65565b15610e1057610e108282613055565b50505050505050565b6040517f3b9f73840000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633b9f738490610e8590879087903390600401614959565b602060405180830381600087803b158015610e9f57600080fd5b505af1158015610eb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed79190614531565b90506106a782612f65565b610eeb83612f65565b15610efc57610ef983612fb0565b92505b600082610f7b57866001600160a01b03166351c0e0616040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f3e57600080fd5b505af1158015610f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f769190613b82565b610fee565b866001600160a01b0316634800d97f6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fb657600080fd5b505af1158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee9190613b82565b90506001600160a01b0386163014611033576001600160a01b03861633146110285760405162461bcd60e51b815260040161070990614cac565b611033868286613082565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b39061107a908a9088906004016148f1565b602060405180830381600087803b15801561109457600080fd5b505af11580156110a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cc9190613e6f565b506040517f2f2cab870000000000000000000000000000000000000000000000000000000081526000906001600160a01b03891690632f2cab879061111b908990899086908a9060040161492d565b602060405180830381600087803b15801561113557600080fd5b505af1158015611149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116d9190614531565b905061117883612f65565b15611187576111878382613055565b5050505050505050565b61119a82612f65565b156111ab576111a882612fb0565b91505b6001600160a01b03841630146111ee576001600160a01b03841633146111e35760405162461bcd60e51b815260040161070990614cac565b6111ee848684613082565b6040517fea785a5e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b0387169063ea785a5e9061123890879087906004016148f1565b602060405180830381600087803b15801561125257600080fd5b505af1158015611266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128a9190614531565b905061129582612f65565b156112a4576112a48282613055565b505050505050565b6112b581612f65565b156112c6576112c381612fb0565b90505b6001600160a01b0383163014611309576001600160a01b03831633146112fe5760405162461bcd60e51b815260040161070990614cac565b611309838583613082565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526001600160a01b03851690632e1a7d4d9061134e908490600401614ddc565b600060405180830381600087803b15801561136857600080fd5b505af115801561137c573d6000803e3d6000fd5b505050506001600160a01b03821630146104c6576000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b1580156113cb57600080fd5b505afa1580156113df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114039190613b82565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0382169063a9059cbb9061144d90869086906004016148f1565b602060405180830381600087803b15801561146757600080fd5b505af115801561147b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a49190613e6f565b6114a882612f65565b156114b9576114b682612fb0565b91505b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114f457600080fd5b505afa158015611508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152c9190613b82565b90506001600160a01b0385163014611571576001600160a01b03851633146115665760405162461bcd60e51b815260040161070990614cac565b611571858285613082565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b3906115b890899087906004016148f1565b602060405180830381600087803b1580156115d257600080fd5b505af11580156115e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160a9190613e6f565b506040517f6e553f650000000000000000000000000000000000000000000000000000000081526000906001600160a01b03881690636e553f65906116559087908990600401614de5565b602060405180830381600087803b15801561166f57600080fd5b505af1158015611683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a79190614531565b90506116b283612f65565b15610e1057610e108382613055565b6116ca83612f65565b156116db576116d883612fb0565b92505b6001600160a01b038516301461171e576001600160a01b03851633146117135760405162461bcd60e51b815260040161070990614cac565b61171e858785613082565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081526000906001600160a01b0388169063ead5d3599061176a9088908890889060040161490a565b6040805180830381600087803b15801561178357600080fd5b505af1158015611797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bb9190614549565b915050610e0182612f65565b6117d081612f65565b156117e1576117de81612fb0565b90505b6000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561181c57600080fd5b505afa158015611830573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118549190613b82565b90506001600160a01b0384163014611899576001600160a01b038416331461188e5760405162461bcd60e51b815260040161070990614cac565b611899848284613082565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b3906118e090889086906004016148f1565b602060405180830381600087803b1580156118fa57600080fd5b505af115801561190e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119329190613e6f565b506040517f6e553f650000000000000000000000000000000000000000000000000000000081526001600160a01b03861690636e553f659061197a9085908790600401614de5565b600060405180830381600087803b15801561199457600080fd5b505af11580156119a8573d6000803e3d6000fd5b505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0384163014806119ec575082155b611a085760405162461bcd60e51b815260040161070990614ce3565b606063fa6e671d60e01b338686604051602401611a27939291906147a5565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935251611a9692869186910161475e565b60408051601f1981840301815291905290506112a46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168261311e565b6040517fc65427940000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c654279490611b4c9030908a908a908a908a908a908a906004016148ad565b600060405180830381600087803b158015611b6657600080fd5b505af1158015611b7a573d6000803e3d6000fd5b50505050505050505050565b866001600160a01b031663d505accf87611b9e611c00565b88888888886040518863ffffffff1660e01b8152600401611bc5979695949392919061486c565b600060405180830381600087803b158015611bdf57600080fd5b505af1158015611bf3573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b038516331480611c4357506001600160a01b03851630145b611c5f5760405162461bcd60e51b815260040161070990614cac565b6000611c6a88613196565b90506000611c7783612f65565b611c82576000611d17565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038316906370a0823190611cc7908990600401614791565b60206040518083038186803b158015611cdf57600080fd5b505afa158015611cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d179190614531565b9050611d2788866040015161319c565b6040860152611d34611c00565b6001600160a01b031663b95cac28858b8a8a8a6040518663ffffffff1660e01b8152600401611d669493929190614afd565b6000604051808303818588803b158015611d7f57600080fd5b505af1158015611d93573d6000803e3d6000fd5b5050505050611da183612f65565b156119a8576040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038416906370a0823190611dee908a90600401614791565b60206040518083038186803b158015611e0657600080fd5b505afa158015611e1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3e9190614531565b9050611b7a846108a383856131ca565b876001600160a01b0316638fcbaf0c88611e66611c00565b8989898989896040518963ffffffff1660e01b8152600401611e8f989796959493929190614823565b600060405180830381600087803b158015611ea957600080fd5b505af1158015611ebd573d6000803e3d6000fd5b505050505050505050505050565b611ed482612f65565b15611ee557611ee282612fb0565b91505b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611f2057600080fd5b505afa158015611f34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f589190613b82565b90506001600160a01b0385163014611f9d576001600160a01b0385163314611f925760405162461bcd60e51b815260040161070990614cac565b611f9d858285613082565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b390611fe490899087906004016148f1565b602060405180830381600087803b158015611ffe57600080fd5b505af1158015612012573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120369190613e6f565b506040517f2f4f21e20000000000000000000000000000000000000000000000000000000081526000906001600160a01b03881690632f4f21e29061165590889088906004016148f1565b61208a81612f65565b1561209b5761209881612fb0565b90505b816001600160a01b031663095ea7b36120b2611c00565b836040518363ffffffff1660e01b81526004016120d09291906148f1565b602060405180830381600087803b1580156120ea57600080fd5b505af11580156120fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121229190613e6f565b505050565b61213082612f65565b156121415761213e82612fb0565b91505b6001600160a01b0384163014612184576001600160a01b03841633146121795760405162461bcd60e51b815260040161070990614cac565b612184848684613082565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121bf57600080fd5b505afa1580156121d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f79190613b82565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03871690632e1a7d4d9061223f908690600401614ddc565b600060405180830381600087803b15801561225957600080fd5b505af115801561226d573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841691506370a08231906122b9903090600401614791565b60206040518083038186803b1580156122d157600080fd5b505afa1580156122e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123099190614531565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0383169063a9059cbb9061235390889085906004016148f1565b602060405180830381600087803b15801561236d57600080fd5b505af1158015612381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a59190613e6f565b506116b283612f65565b6001600160a01b0385163314806123ce57506001600160a01b03851630145b6123ea5760405162461bcd60e51b815260040161070990614cac565b60608167ffffffffffffffff8111801561240357600080fd5b5060405190808252806020026020018201604052801561242d578160200160208202803683370190505b50905060608267ffffffffffffffff8111801561244957600080fd5b50604051908082528060200260200182016040528015612473578160200160208202803683370190505b50905060005b838110156125e35761249085858381811061082e57fe5b6124ac5760405162461bcd60e51b815260040161070990614d1a565b85516000908686848181106124bd57fe5b90506040020160000135815181106124d157fe5b6020026020010151905086606001511561251f576124ee816131e0565b8483815181106124fa57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506125da565b612528816131e3565b6125b557612535816131e0565b6001600160a01b03166370a08231896040518263ffffffff1660e01b81526004016125609190614791565b60206040518083038186803b15801561257857600080fd5b505afa15801561258c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b09190614531565b6125c1565b876001600160a01b0316315b8383815181106125cd57fe5b6020026020010181815250505b50600101612479565b5084606001511561267a576125f6611c00565b6001600160a01b0316630f5a6efa87846040518363ffffffff1660e01b81526004016126239291906147c9565b60006040518083038186803b15801561263b57600080fd5b505afa15801561264f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126779190810190613e34565b90505b6126888886604001516131f0565b6040860152612695611c00565b6001600160a01b0316638bdb39138a8989896040518563ffffffff1660e01b81526004016126c69493929190614afd565b600060405180830381600087803b1580156126e057600080fd5b505af11580156126f4573d6000803e3d6000fd5b50606092508591505067ffffffffffffffff8111801561271357600080fd5b5060405190808252806020026020018201604052801561273d578160200160208202803683370190505b5090508560600151156127da57612752611c00565b6001600160a01b0316630f5a6efa88856040518363ffffffff1660e01b815260040161277f9291906147c9565b60006040518083038186803b15801561279757600080fd5b505afa1580156127ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127d39190810190613e34565b90506128d8565b60005b848110156128d65786516000908787848181106127f657fe5b905060400201600001358151811061280a57fe5b6020026020010151905061281d816131e3565b6128aa5761282a816131e0565b6001600160a01b03166370a082318a6040518263ffffffff1660e01b81526004016128559190614791565b60206040518083038186803b15801561286d57600080fd5b505afa158015612881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a59190614531565b6128b6565b886001600160a01b0316315b8383815181106128c257fe5b6020908102919091010152506001016127dd565b505b60005b84811015611bf3576129358686838181106128f257fe5b905060400201602001356108a385848151811061290b57fe5b602002602001015185858151811061291f57fe5b60200260200101516131ca90919063ffffffff16565b6001016128db565b61294682612f65565b156129575761295482612fb0565b91505b6001600160a01b03841630146129ba576001600160a01b038416331461298f5760405162461bcd60e51b815260040161070990614cac565b6129ba847f000000000000000000000000000000000000000000000000000000000000000084613082565b6040517fde0e9a3e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063de0e9a3e90612a22908690600401614ddc565b602060405180830381600087803b158015612a3c57600080fd5b505af1158015612a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a749190614531565b90506001600160a01b0384163014610b9d576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90610b4990879085906004016148f1565b612af682612f65565b15612b0757612b0482612fb0565b91505b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b4257600080fd5b505afa158015612b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7a9190613b82565b90506001600160a01b0385163014612bbf576001600160a01b0385163314612bb45760405162461bcd60e51b815260040161070990614cac565b612bbf858285613082565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b390612c0690899087906004016148f1565b602060405180830381600087803b158015612c2057600080fd5b505af1158015612c34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c589190613e6f565b506040517fb6b55f250000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063b6b55f2590612c9e908690600401614ddc565b600060405180830381600087803b158015612cb857600080fd5b505af1158015612ccc573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03891691506370a0823190612d18903090600401614791565b60206040518083038186803b158015612d3057600080fd5b505afa158015612d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d689190614531565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0388169063a9059cbb9061235390889085906004016148f1565b60005b82811015612e465733848483818110612dca57fe5b905060a002016060016020810190612de29190613b66565b6001600160a01b03161480612e22575030848483818110612dff57fe5b905060a002016060016020810190612e179190613b66565b6001600160a01b0316145b612e3e5760405162461bcd60e51b815260040161070990614cac565b600101612db5565b50612e4f611c00565b6001600160a01b0316630e8e3e848285856040518463ffffffff1660e01b8152600401612e7d9291906149b9565b6000604051808303818588803b158015612e9657600080fd5b505af1158015611187573d6000803e3d6000fd5b612eb382612f65565b15612ec457612ec182612fb0565b91505b6001600160a01b0384163014612f07576001600160a01b0384163314612efc5760405162461bcd60e51b815260040161070990614cac565b612f07848684613082565b6040517fba0876520000000000000000000000000000000000000000000000000000000081526000906001600160a01b0387169063ba0876529061123890869088903090600401614dfc565b6000612f5e82613217565b9392505050565b7fba100000000000000000000000000000000000000000000000000000000000007ffff00000000000000000000000000000000000000000000000000000000000008216145b919050565b6000806000612fbe84613217565b91509150612fcb8461322e565b15612f5e57600082559392505050565b612fea814710156101a3613275565b6000826001600160a01b031682604051613003906131e0565b60006040518083038185875af1925050503d8060008114613040576040519150601f19603f3d011682016040523d82523d6000602084013e613045565b606091505b50509050612122816101a4613275565b600061306083613287565b919091555050565b600080821361307a578160000361307c565b815b92915050565b8061308c57612122565b6040805160018082528183019092526060916020808301908036833701905050905082816000815181106130bc57fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050828160008151811061310757fe5b602002602001018181525050610bb58583836132e5565b606060006060846001600160a01b03168460405161313c9190614742565b6000604051808303816000865af19150503d8060008114613179576040519150601f19603f3d011682016040523d82523d6000602084013e61317e565b606091505b509150915061318d828261341f565b95945050505050565b60601c90565b606060008380156131a957fe5b14156131bf576131b882613449565b905061307c565b61307c610136613486565b60006131da838311156001613275565b50900390565b90565b6001600160a01b03161590565b606060008380156131fd57fe5b141561320c576131b8826134b3565b61307c610150613486565b60008061322383613287565b915081549050915091565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b816132835761328381613486565b5050565b60006001613294836134fc565b7f00000000000000000000000000000000000000000000000000000000000000006040516020016132c6929190614783565b60408051808303601f1901815291905280516020909101200392915050565b6060825167ffffffffffffffff811180156132ff57600080fd5b5060405190808252806020026020018201604052801561333957816020015b61332661374a565b81526020019060019003908161331e5790505b50905060005b83518110156133d1576040805160a08101909152806003815260200185838151811061336757fe5b60200260200101516001600160a01b0316815260200184838151811061338957fe5b60200260200101518152602001866001600160a01b03168152602001306001600160a01b03168152508282815181106133be57fe5b602090810291909101015260010161333f565b506133da611c00565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b81526004016134059190614a67565b600060405180830381600087803b158015612e9657600080fd5b6060821561342e57508061307c565b81511561343e5781518083602001fd5b61307c6101ae613486565b606060006134568361351f565b9050600181600381111561346657fe5b141561347d5761347583613535565b915050612fab565b82915050612fab565b6134b0817f42414c00000000000000000000000000000000000000000000000000000000006135e3565b50565b606060006134c08361351f565b905060008160038111156134d057fe5b14156134df5761347583613644565b60018160038111156134ed57fe5b141561347d57613475836136a7565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b60008180602001905181019061307c9190614258565b6060806000613543846136fa565b915091506000805b83518110156135a957600084828151811061356257fe5b6020026020010151905061357581612f65565b156135a05761358381612fb0565b85838151811061358f57fe5b602002602001018181525050600192505b5060010161354b565b50806135b5578461318d565b600183836040516020016135cb93929190614b71565b60405160208183030381529060405295945050505050565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60606000806136528461371d565b9150915061365f82612f65565b1561369d5761366d82612fb0565b91506000828260405160200161368593929190614b50565b60405160208183030381529060405292505050612fab565b8392505050612fab565b606060006136b483613734565b90506136bf81612f65565b1561347d576136cd81612fb0565b90506001816040516020016136e3929190614b39565b604051602081830303815290604052915050612fab565b606060008280602001905181019061371291906142d7565b909590945092505050565b6000808280602001905181019061371291906142a1565b600081806020019051810190612f5e9190614274565b6040805160a081019091528060008152600060208201819052604082018190526060820181905260809091015290565b803561307c81614eaf565b60008083601f840112613796578182fd5b50813567ffffffffffffffff8111156137ad578182fd5b60208301915083602080830285010111156137c757600080fd5b9250929050565b600082601f8301126137de578081fd5b81356137f16137ec82614e42565b614e1b565b81815291506020808301908481018184028601820187101561381257600080fd5b60005b8481101561383a57813561382881614eaf565b84529282019290820190600101613815565b505050505092915050565b600082601f830112613855578081fd5b81356138636137ec82614e42565b818152915060208083019084810160005b8481101561383a578135870160a080601f19838c0301121561389557600080fd5b61389e81614e1b565b85830135815260408084013587830152606080850135828401526080915081850135818401525082840135925067ffffffffffffffff8311156138e057600080fd5b6138ee8c8885870101613a10565b90820152865250509282019290820190600101613874565b60008083601f840112613917578182fd5b50813567ffffffffffffffff81111561392e578182fd5b6020830191508360206040830285010111156137c757600080fd5b600082601f830112613959578081fd5b81356139676137ec82614e42565b81815291506020808301908481018184028601820187101561398857600080fd5b60005b8481101561383a5781358452928201929082019060010161398b565b600082601f8301126139b7578081fd5b81516139c56137ec82614e42565b8181529150602080830190848101818402860182018710156139e657600080fd5b60005b8481101561383a578151845292820192908201906001016139e9565b803561307c81614ec4565b600082601f830112613a20578081fd5b813567ffffffffffffffff811115613a36578182fd5b613a496020601f19601f84011601614e1b565b9150808252836020828501011115613a6057600080fd5b8060208401602084013760009082016020015292915050565b80356001811061307c57600080fd5b80356002811061307c57600080fd5b600060808284031215613aa8578081fd5b613ab26080614e1b565b9050813567ffffffffffffffff80821115613acc57600080fd5b613ad8858386016137ce565b83526020840135915080821115613aee57600080fd5b613afa85838601613949565b60208401526040840135915080821115613b1357600080fd5b50613b2084828501613a10565b604083015250613b338360608401613a05565b606082015292915050565b600060808284031215613b4f578081fd5b50919050565b803560ff8116811461307c57600080fd5b600060208284031215613b77578081fd5b8135612f5e81614eaf565b600060208284031215613b93578081fd5b8151612f5e81614eaf565b60008060008060808587031215613bb3578283fd5b8435613bbe81614eaf565b93506020850135613bce81614eaf565b93969395505050506040820135916060013590565b60008060008060608587031215613bf8578182fd5b8435613c0381614eaf565b93506020850135613c1381614ec4565b9250604085013567ffffffffffffffff80821115613c2f578384fd5b818701915087601f830112613c42578384fd5b813581811115613c50578485fd5b886020828501011115613c61578485fd5b95989497505060200194505050565b600080600060608486031215613c84578081fd5b8335613c8f81614eaf565b95602085013595506040909401359392505050565b600080600060408486031215613cb8578081fd5b833567ffffffffffffffff811115613cce578182fd5b613cda86828701613785565b909790965060209590950135949350505050565b60008060208385031215613d00578182fd5b823567ffffffffffffffff811115613d16578283fd5b613d2285828601613785565b90969095509350505050565b60006020808385031215613d40578182fd5b825167ffffffffffffffff811115613d56578283fd5b8301601f81018513613d66578283fd5b8051613d746137ec82614e42565b8181528381019083850185840285018601891015613d90578687fd5b8694505b83851015613db2578051835260019490940193918501918501613d94565b50979650505050505050565b600080600060408486031215613dd2578081fd5b833567ffffffffffffffff80821115613de9578283fd5b818601915086601f830112613dfc578283fd5b813581811115613e0a578384fd5b87602060a083028501011115613e1e578384fd5b6020928301989097509590910135949350505050565b600060208284031215613e45578081fd5b815167ffffffffffffffff811115613e5b578182fd5b613e67848285016139a7565b949350505050565b600060208284031215613e80578081fd5b8151612f5e81614ec4565b60008060008060008060c08789031215613ea3578384fd5b8635613eae81614ec4565b95506020870135613ebe81614eaf565b945060408701359350613ed48860608901613b55565b92506080870135915060a087013590509295509295509295565b600080600080600080600060c0888a031215613f08578485fd5b87359650613f198960208a01613a79565b95506040880135613f2981614eaf565b94506060880135613f3981614eaf565b9350608088013567ffffffffffffffff80821115613f55578283fd5b613f618b838c01613a97565b945060a08a0135915080821115613f76578283fd5b50613f838a828b01613906565b989b979a50959850939692959293505050565b600080600080600080600060e0888a031215613fb0578081fd5b87359650613fc18960208a01613a79565b95506040880135613fd181614eaf565b94506060880135613fe181614eaf565b9350608088013567ffffffffffffffff811115613ffc578182fd5b6140088a828b01613a97565b93505060a0880135915060c0880135905092959891949750929550565b600080600080600080600080610100898b031215614041578182fd5b883561404c81614eaf565b9750602089013561405c81614eaf565b96506040890135955060608901359450608089013561407a81614ec4565b93506140898a60a08b01613b55565b925060c0890135915060e089013590509295985092959890939650565b600080600080600080600060e0888a0312156140c0578081fd5b87356140cb81614eaf565b965060208801356140db81614eaf565b955060408801359450606088013593506140f88960808a01613b55565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215614126578182fd5b823561413181614eaf565b946020939093013593505050565b600080600080600060a08688031215614156578283fd5b853561416181614eaf565b9450602086013561417181614eaf565b9350604086013561418181614eaf565b94979396509394606081013594506080013592915050565b600080600080608085870312156141ae578182fd5b84356141b981614eaf565b935060208501356141c981614eaf565b925060408501356141d981614eaf565b9396929550929360600135925050565b60008060008060008060c08789031215614201578384fd5b863561420c81614eaf565b9550602087013561421c81614eaf565b9450604087013561422c81614eaf565b935060608701359250608087013561424381614ec4565b8092505060a087013590509295509295509295565b600060208284031215614269578081fd5b8151612f5e81614ed2565b60008060408385031215614286578182fd5b825161429181614ed2565b6020939093015192949293505050565b6000806000606084860312156142b5578081fd5b83516142c081614ed2565b602085015160409095015190969495509392505050565b6000806000606084860312156142eb578081fd5b83516142f681614ed2565b602085015190935067ffffffffffffffff811115614312578182fd5b61431e868287016139a7565b925050604084015190509250925092565b60008060008060008060008060008060006101608c8e031215614350578485fd5b61435a8d8d613a88565b9a5067ffffffffffffffff8060208e01351115614375578586fd5b6143858e60208f01358f01613845565b9a508060408e01351115614397578586fd5b6143a78e60408f01358f01613785565b909a5098506143b98e60608f01613b3e565b97508060e08e013511156143cb578586fd5b6143db8e60e08f01358f01613785565b90975095506101008d013594506101208d013593506101408d0135811015614401578283fd5b506144138d6101408e01358e01613906565b81935080925050509295989b509295989b9093969950565b6000806000806000806101208789031215614444578384fd5b863567ffffffffffffffff8082111561445b578586fd5b9088019060c0828b03121561446e578586fd5b61447860c0614e1b565b823581526144898b60208501613a88565b6020820152604083013561449c81614eaf565b60408201526144ae8b6060850161377a565b60608201526080830135608082015260a0830135828111156144ce578788fd5b6144da8c828601613a10565b60a0830152508098505050506144f38860208901613b3e565b959895975050505060a08401359360c08101359360e08201359350610100909101359150565b60006020828403121561452a578081fd5b5035919050565b600060208284031215614542578081fd5b5051919050565b6000806040838503121561455b578182fd5b505080516020909101519092909150565b6001600160a01b03169052565b60008284526020808501945082825b858110156145b657813561459b81614eaf565b6001600160a01b031687529582019590820190600101614588565b509495945050505050565b60008284526020808501945082825b858110156145b6578135875295820195908201906001016145d0565b6000815180845260208085019450808401835b838110156145b6578151875295820195908201906001016145ff565b15159052565b60008151808452614639816020860160208601614e6f565b601f01601f19169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b818110156146925783516001600160a01b03168352928401929184019160010161466d565b5050828501519150858103838701526146ab81836145ec565b92505050604083015184820360408601526146c68282614621565b91505060608301516146db606086018261461b565b509392505050565b80356146ee81614eaf565b6001600160a01b03908116835260208201359061470a82614ec4565b901515602084015260408201359061472182614eaf565b166040830152606081013561473581614ec4565b8015156060840152505050565b60008251614754818460208701614e6f565b9190910192915050565b60008451614770818460208901614e6f565b8201838582379092019182525092915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6000604082016001600160a01b03808616845260206040818601528286518085526060870191508288019450855b818110156148155785518516835294830194918301916001016147f7565b509098975050505050505050565b6001600160a01b039889168152969097166020870152604086019490945260608501929092521515608084015260ff1660a083015260c082015260e08101919091526101000190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0397881681529515156020870152939095166040850152606084019190915260ff16608083015260a082019290925260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b6001600160a01b03949094168452602084019290925261ffff1660408301521515606082015260800190565b6040808252810183905260008460608301825b8681101561499c576020833561498181614eaf565b6001600160a01b03168352928301929091019060010161496c565b5080925050506001600160a01b0383166020830152949350505050565b6020808252818101839052600090604080840186845b87811015614a5a5781356149e281614ed2565b6149eb81614e9b565b8352818501356149fa81614eaf565b6001600160a01b03168386015281840135848401526060614a1d81840184614e62565b614a298286018261456c565b50506080614a3981840184614e62565b614a458286018261456c565b505060a09283019291909101906001016149cf565b5090979650505050505050565b602080825282518282018190526000919060409081850190868401855b82811015614af05781518051614a9981614e9b565b8552808701516001600160a01b0316878601528581015186860152606080820151614ac68288018261456c565b505060809081015190614adb8682018361456c565b505060a0939093019290850190600101614a84565b5091979650505050505050565b60008582526001600160a01b03808616602084015280851660408401525060806060830152614b2f608083018461464d565b9695505050505050565b60408101614b4684614e9b565b9281526020015290565b60608101614b5d85614e9b565b938152602081019290925260409091015290565b6000614b7c85614e9b565b84825260606020830152614b9360608301856145ec565b9050826040830152949350505050565b6000610120808301614bb48c614ea5565b8b84526020808501929092528a5190819052610140808501928281028601909101918c8201855b82811015614c5b578785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00186528151805186528481015185870152604080820151908701526060808201519087015260809081015160a091870182905290614c4781880183614621565b978601979650505090830190600101614bdb565b505050508381036040850152614c72818a8c614579565b915050614c8260608401886146e3565b82810360e0840152614c958186886145c1565b915050826101008301529998505050505050505050565b60208082526010908201527f496e636f72726563742073656e64657200000000000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b60208082526019908201527f696e76616c696420636861696e6564207265666572656e636500000000000000604082015260600190565b600060e08252855160e08301526020860151614d6c81614ea5565b61010083015260408601516001600160a01b03908116610120840152606087015116610140830152608086015161016083015260a086015160c0610180840152614dba6101a0840182614621565b915050614dca60208301866146e3565b60a082019390935260c0015292915050565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526001600160a01b03918216602084015216604082015260600190565b60405181810167ffffffffffffffff81118282101715614e3a57600080fd5b604052919050565b600067ffffffffffffffff821115614e58578081fd5b5060209081020190565b60008235612f5e81614eaf565b60005b83811015614e8a578181015183820152602001614e72565b838111156104c65750506000910152565b600481106134b057fe5b600281106134b057fe5b6001600160a01b03811681146134b057600080fd5b80151581146134b057600080fd5b600481106134b057600080fdfea264697066735822122050b32f1916dd2bfb3a1d0a43f7959f7e0894f8a708f95ba38dda2a8251d8bb9564736f6c6343000701003360c060405234801561001057600080fd5b5060405161078738038061078783398101604081905261002f91610052565b60016000556001600160601b0319606092831b8116608052911b1660a0526100a3565b60008060408385031215610064578182fd5b825161006f8161008b565b60208401519092506100808161008b565b809150509250929050565b6001600160a01b03811681146100a057600080fd5b50565b60805160601c60a05160601c6106b36100d46000398060fc528061020f5250806058528061012052506106b36000f3fe6080604052600436106100385760003560e01c80637678922e146100885780638d928af8146100b3578063ac9650d8146100c857610083565b36610083576100813373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102066100e8565b005b600080fd5b34801561009457600080fd5b5061009d6100fa565b6040516100aa919061050e565b60405180910390f35b3480156100bf57600080fd5b5061009d61011e565b6100db6100d6366004610480565b610142565b6040516100aa919061052f565b816100f6576100f68161026e565b5050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061014c61029b565b8167ffffffffffffffff8111801561016357600080fd5b5060405190808252806020026020018201604052801561019757816020015b60608152602001906001900390816101825790505b50905060005b82811015610257576102388484838181106101b457fe5b90506020028101906101c691906105e3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016929150506102b4565b82828151811061024457fe5b602090810291909101015260010161019d565b50610260610337565b610268610348565b92915050565b610298817f42414c000000000000000000000000000000000000000000000000000000000061034f565b50565b6102ad600260005414156101906100e8565b6002600055565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516102df91906104ef565b600060405180830381855af49150503d806000811461031a576040519150601f19603f3d011682016040523d82523d6000602084013e61031f565b606091505b509150915061032e82826103ca565b95945050505050565b4780156102985761029833826103f4565b6001600055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156103d9575080610268565b8151156103e95781518083602001fd5b6102686101ae61026e565b610403814710156101a36100e8565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516104299061050b565b60006040518083038185875af1925050503d8060008114610466576040519150601f19603f3d011682016040523d82523d6000602084013e61046b565b606091505b5050905061047b816101a46100e8565b505050565b60008060208385031215610492578182fd5b823567ffffffffffffffff808211156104a9578384fd5b818501915085601f8301126104bc578384fd5b8135818111156104ca578485fd5b86602080830285010111156104dd578485fd5b60209290920196919550909350505050565b6000825161050181846020870161064d565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156105d6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610599818989018a850161064d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01695909501860194509285019290850190600101610554565b5092979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610617578283fd5b83018035915067ffffffffffffffff821115610631578283fd5b60200191503681900382131561064657600080fd5b9250929050565b60005b83811015610668578181015183820152602001610650565b83811115610677576000848401525b5050505056fea2646970667358221220063fdaaad6c7f32fb6dd53f100269a9ea16c7241c4a9587b1f83f82a35b5424264736f6c63430007010033","opcodes":"PUSH2 0x160 PUSH1 0x40 MSTORE PUSH32 0xAE1DC54057AF8E8E5CE068CDD4383149C7EFCB30E8FB95B592EE1594367FB509 PUSH1 0xE0 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x59F3 CODESIZE SUB DUP1 PUSH3 0x59F3 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x59 SWAP2 PUSH3 0x209 JUMP JUMPDEST DUP2 DUP2 DUP5 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAD5C4648 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xAB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 PUSH3 0xD1 SWAP2 SWAP1 PUSH3 0x25C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP1 DUP3 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 ADDRESS SWAP1 PUSH3 0xFE SWAP1 PUSH3 0x1FB JUMP JUMPDEST PUSH3 0x10B SWAP3 SWAP2 SWAP1 PUSH3 0x282 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x128 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xC0 MSTORE SWAP3 SWAP1 SHL SWAP1 SWAP2 AND PUSH2 0x100 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x15E JUMPI PUSH1 0x0 PUSH3 0x1D5 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC1FE3E48 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x19A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x1AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 PUSH3 0x1D5 SWAP2 SWAP1 PUSH3 0x25C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH2 0x120 MSTORE SWAP2 SWAP1 SHL AND PUSH2 0x140 MSTORE POP PUSH3 0x2B5 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x787 DUP1 PUSH3 0x526C DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x21E JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH3 0x22B DUP2 PUSH3 0x29C JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x23E DUP2 PUSH3 0x29C JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x251 DUP2 PUSH3 0x29C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x26E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x27B DUP2 PUSH3 0x29C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x2B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x4F15 PUSH3 0x357 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x519 MSTORE DUP1 PUSH2 0x5AD MSTORE DUP1 PUSH2 0x613 MSTORE DUP1 PUSH2 0x999 MSTORE DUP1 PUSH2 0xA49 MSTORE DUP1 PUSH2 0xB12 MSTORE DUP1 PUSH2 0x2995 MSTORE DUP1 PUSH2 0x29ED MSTORE POP DUP1 PUSH2 0x917 MSTORE DUP1 PUSH2 0x96C MSTORE DUP1 PUSH2 0xBDA MSTORE DUP1 PUSH2 0xCB9 MSTORE DUP1 PUSH2 0x2AB6 MSTORE POP DUP1 PUSH2 0xE4C MSTORE DUP1 PUSH2 0x1B0B MSTORE POP DUP1 PUSH2 0x3296 MSTORE POP DUP1 PUSH2 0x19B5 MSTORE POP DUP1 PUSH2 0x1AB5 MSTORE DUP1 PUSH2 0x1C02 MSTORE POP POP PUSH2 0x4F15 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80DB15BD GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xB6D24737 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE8210E3C GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE8210E3C EQ PUSH2 0x3CB JUMPI DUP1 PUSH4 0xECC02637 EQ PUSH2 0x3DE JUMPI DUP1 PUSH4 0xEFE69108 EQ PUSH2 0x3F1 JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0x404 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0xB6D24737 EQ PUSH2 0x372 JUMPI DUP1 PUSH4 0xD293F290 EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0xD80952D5 EQ PUSH2 0x3A5 JUMPI DUP1 PUSH4 0xDB4C0E91 EQ PUSH2 0x3B8 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x324 JUMPI DUP1 PUSH4 0x8FE4624F EQ PUSH2 0x339 JUMPI DUP1 PUSH4 0x959FC17A EQ PUSH2 0x34C JUMPI DUP1 PUSH4 0xABF6D399 EQ PUSH2 0x35F JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x8C57198B EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x8D64CFBC EQ PUSH2 0x311 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0x6D307EA8 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x6D307EA8 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0x7AB6E03C EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0x7BC008F5 EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0x2C0 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x611B90DD EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0x65CA4804 EQ PUSH2 0x274 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x1C982441 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x1C982441 EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0x2CBEC84E EQ PUSH2 0x215 JUMPI DUP1 PUSH4 0x2E6272EA EQ PUSH2 0x228 JUMPI DUP1 PUSH4 0x3F85D390 EQ PUSH2 0x23B JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0xE248FEA EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x1089E5E3 EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0x18369446 EQ PUSH2 0x1EF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1DA PUSH2 0x1D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3CEE JUMP JUMPDEST PUSH2 0x431 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DA PUSH2 0x1EA CALLDATASIZE PUSH1 0x4 PUSH2 0x3C70 JUMP JUMPDEST PUSH2 0x4CC JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x1FD CALLDATASIZE PUSH1 0x4 PUSH2 0x432F JUMP JUMPDEST PUSH2 0x6B6 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x210 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B9E JUMP JUMPDEST PUSH2 0x8BF JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x223 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C70 JUMP JUMPDEST PUSH2 0xBBC JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x236 CALLDATASIZE PUSH1 0x4 PUSH2 0x442B JUMP JUMPDEST PUSH2 0xCF0 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x249 CALLDATASIZE PUSH1 0x4 PUSH2 0x3CA4 JUMP JUMPDEST PUSH2 0xE19 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x25C CALLDATASIZE PUSH1 0x4 PUSH2 0x41E9 JUMP JUMPDEST PUSH2 0xEE2 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x26F CALLDATASIZE PUSH1 0x4 PUSH2 0x413F JUMP JUMPDEST PUSH2 0x1191 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x282 CALLDATASIZE PUSH1 0x4 PUSH2 0x4199 JUMP JUMPDEST PUSH2 0x12AC JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x295 CALLDATASIZE PUSH1 0x4 PUSH2 0x413F JUMP JUMPDEST PUSH2 0x149F JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x2A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x41E9 JUMP JUMPDEST PUSH2 0x16C1 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x2BB CALLDATASIZE PUSH1 0x4 PUSH2 0x4199 JUMP JUMPDEST PUSH2 0x17C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D5 PUSH2 0x19B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x4791 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1DA PUSH2 0x2F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3BE3 JUMP JUMPDEST PUSH2 0x19D7 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x30C CALLDATASIZE PUSH1 0x4 PUSH2 0x3E8B JUMP JUMPDEST PUSH2 0x1ADB JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x31F CALLDATASIZE PUSH1 0x4 PUSH2 0x40A6 JUMP JUMPDEST PUSH2 0x1B86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D5 PUSH2 0x1C00 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x347 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F96 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x35A CALLDATASIZE PUSH1 0x4 PUSH2 0x4025 JUMP JUMPDEST PUSH2 0x1E4E JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x36D CALLDATASIZE PUSH1 0x4 PUSH2 0x413F JUMP JUMPDEST PUSH2 0x1ECB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x38D CALLDATASIZE PUSH1 0x4 PUSH2 0x4114 JUMP JUMPDEST PUSH2 0x2081 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x413F JUMP JUMPDEST PUSH2 0x2127 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EEE JUMP JUMPDEST PUSH2 0x23AF JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B9E JUMP JUMPDEST PUSH2 0x293D JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x413F JUMP JUMPDEST PUSH2 0x2AED JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3EC CALLDATASIZE PUSH1 0x4 PUSH2 0x3DBE JUMP JUMPDEST PUSH2 0x2DB2 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3FF CALLDATASIZE PUSH1 0x4 PUSH2 0x413F JUMP JUMPDEST PUSH2 0x2EAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x424 PUSH2 0x41F CALLDATASIZE PUSH1 0x4 PUSH2 0x4519 JUMP JUMPDEST PUSH2 0x2F53 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x4DDC JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4C6 JUMPI DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0x449 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x45E SWAP2 SWAP1 PUSH2 0x3B66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x84E9BD7E CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x489 SWAP2 SWAP1 PUSH2 0x4791 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x435 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x4D5 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x4E6 JUMPI PUSH2 0x4E3 DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB0E3890000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xB0E38900 SWAP1 PUSH2 0x54E SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DDC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x57A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x59E SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH2 0x5D3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP5 PUSH2 0x2FDB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x69E JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x64A SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x678 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x69C SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP JUMPDEST PUSH2 0x6A7 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x4C6 JUMPI PUSH2 0x4C6 DUP3 DUP3 PUSH2 0x3055 JUMP JUMPDEST CALLER PUSH2 0x6C4 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x3B66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x6ED JUMPI POP ADDRESS PUSH2 0x6E2 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x3B66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x712 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0x777 JUMPI PUSH1 0x0 DUP12 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x72C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD SWAP1 POP PUSH2 0x743 DUP2 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x76E JUMPI PUSH2 0x751 DUP2 PUSH2 0x2FB0 JUMP JUMPDEST DUP13 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x75D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x715 JUMP JUMPDEST POP PUSH1 0x60 PUSH2 0x782 PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x945BCEC9 DUP6 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7BC SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BA3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x812 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3D2E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x8B0 JUMPI PUSH2 0x83D DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x82E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2F65 JUMP JUMPDEST PUSH2 0x859 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4D1A JUMP JUMPDEST PUSH2 0x8A8 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x868 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8A3 DUP5 DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x882 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x896 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3068 JUMP JUMPDEST PUSH2 0x3055 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x817 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8C8 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x8D9 JUMPI PUSH2 0x8D6 DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x93C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x911 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x93C DUP5 PUSH32 0x0 DUP5 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x9C3 SWAP1 PUSH32 0x0 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xA15 SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0xEA598CB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xEA598CB0 SWAP1 PUSH2 0xA7E SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DDC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAAC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xAD0 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0xB9D JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0xB49 SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB77 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xB9B SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP JUMPDEST PUSH2 0xBA6 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0xBB5 JUMPI PUSH2 0xBB5 DUP3 DUP3 PUSH2 0x3055 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xBC5 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0xBD6 JUMPI PUSH2 0xBD3 DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA1903EAB DUP5 ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC25 SWAP2 SWAP1 PUSH2 0x4791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC52 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP 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 0xC77 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x69E JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x64A SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST CALLER PUSH2 0xCFE PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x3B66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xD27 JUMPI POP ADDRESS PUSH2 0xD1C PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x3B66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xD43 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0xD50 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0xD68 JUMPI PUSH2 0xD62 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x2FB0 JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0xD72 PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52BBBE29 DUP5 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDA4 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDD1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP 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 0xDF6 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH2 0xE01 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0xE10 JUMPI PUSH2 0xE10 DUP3 DUP3 PUSH2 0x3055 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x3B9F738400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x3B9F7384 SWAP1 PUSH2 0xE85 SWAP1 DUP8 SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x4959 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEB3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xED7 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH2 0x6A7 DUP3 PUSH2 0x2F65 JUMP JUMPDEST PUSH2 0xEEB DUP4 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0xEFC JUMPI PUSH2 0xEF9 DUP4 PUSH2 0x2FB0 JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xF7B JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x51C0E061 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF52 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xF76 SWAP2 SWAP1 PUSH2 0x3B82 JUMP JUMPDEST PUSH2 0xFEE JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4800D97F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFCA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xFEE SWAP2 SWAP1 PUSH2 0x3B82 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ADDRESS EQ PUSH2 0x1033 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND CALLER EQ PUSH2 0x1028 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x1033 DUP7 DUP3 DUP7 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x107A SWAP1 DUP11 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1094 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x10CC SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x2F2CAB8700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x2F2CAB87 SWAP1 PUSH2 0x111B SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP7 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x492D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1149 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x116D SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH2 0x1178 DUP4 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x1187 JUMPI PUSH2 0x1187 DUP4 DUP3 PUSH2 0x3055 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x119A DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x11AB JUMPI PUSH2 0x11A8 DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x11EE JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x11E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x11EE DUP5 DUP7 DUP5 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEA785A5E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xEA785A5E SWAP1 PUSH2 0x1238 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1266 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x128A SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH2 0x1295 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x12A4 JUMPI PUSH2 0x12A4 DUP3 DUP3 PUSH2 0x3055 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x12B5 DUP2 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x12C6 JUMPI PUSH2 0x12C3 DUP2 PUSH2 0x2FB0 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ PUSH2 0x1309 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER EQ PUSH2 0x12FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x1309 DUP4 DUP6 DUP4 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x134E SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DDC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1368 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x137C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1403 SWAP2 SWAP1 PUSH2 0x3B82 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x144D SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1467 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x147B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x12A4 SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST PUSH2 0x14A8 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x14B9 JUMPI PUSH2 0x14B6 DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1508 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x152C SWAP2 SWAP1 PUSH2 0x3B82 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x1571 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x1566 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x1571 DUP6 DUP3 DUP6 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x15B8 SWAP1 DUP10 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x160A SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x1655 SWAP1 DUP8 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DE5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x166F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1683 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x16A7 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH2 0x16B2 DUP4 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0xE10 JUMPI PUSH2 0xE10 DUP4 DUP3 PUSH2 0x3055 JUMP JUMPDEST PUSH2 0x16CA DUP4 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x16DB JUMPI PUSH2 0x16D8 DUP4 PUSH2 0x2FB0 JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x171E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x1713 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x171E DUP6 DUP8 DUP6 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEAD5D35900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xEAD5D359 SWAP1 PUSH2 0x176A SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x490A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1783 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1797 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x17BB SWAP2 SWAP1 PUSH2 0x4549 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xE01 DUP3 PUSH2 0x2F65 JUMP JUMPDEST PUSH2 0x17D0 DUP2 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x17E1 JUMPI PUSH2 0x17DE DUP2 PUSH2 0x2FB0 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x181C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1830 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1854 SWAP2 SWAP1 PUSH2 0x3B82 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x1899 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x188E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x1899 DUP5 DUP3 DUP5 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x18E0 SWAP1 DUP9 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x190E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1932 SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x197A SWAP1 DUP6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DE5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ DUP1 PUSH2 0x19EC JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x1A08 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CE3 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A27 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x47A5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x1A96 SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x475E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x12A4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP3 PUSH2 0x311E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC654279400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xC6542794 SWAP1 PUSH2 0x1B4C SWAP1 ADDRESS SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x48AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD505ACCF DUP8 PUSH2 0x1B9E PUSH2 0x1C00 JUMP JUMPDEST DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BC5 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x486C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x1C43 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x1C5F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C6A DUP9 PUSH2 0x3196 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1C77 DUP4 PUSH2 0x2F65 JUMP JUMPDEST PUSH2 0x1C82 JUMPI PUSH1 0x0 PUSH2 0x1D17 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1CC7 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1D17 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH2 0x1D27 DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x319C JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x1D34 PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB95CAC28 DUP6 DUP12 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1D66 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4AFD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D93 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x1DA1 DUP4 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x19A8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1DEE SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x4791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E1A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1E3E SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH2 0x1B7A DUP5 PUSH2 0x8A3 DUP4 DUP6 PUSH2 0x31CA JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8FCBAF0C DUP9 PUSH2 0x1E66 PUSH2 0x1C00 JUMP JUMPDEST DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E8F SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4823 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EBD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1ED4 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x1EE5 JUMPI PUSH2 0x1EE2 DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F34 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1F58 SWAP2 SWAP1 PUSH2 0x3B82 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x1F9D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x1F92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x1F9D DUP6 DUP3 DUP6 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x1FE4 SWAP1 DUP10 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2012 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2036 SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x2F4F21E200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x2F4F21E2 SWAP1 PUSH2 0x1655 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH2 0x208A DUP2 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x209B JUMPI PUSH2 0x2098 DUP2 PUSH2 0x2FB0 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95EA7B3 PUSH2 0x20B2 PUSH2 0x1C00 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x20D0 SWAP3 SWAP2 SWAP1 PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2122 SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x2130 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x2141 JUMPI PUSH2 0x213E DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x2184 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x2179 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x2184 DUP5 DUP7 DUP5 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x21F7 SWAP2 SWAP1 PUSH2 0x3B82 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x223F SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DDC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x226D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x22B9 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x22E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2309 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x2353 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x236D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2381 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x23A5 SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP PUSH2 0x16B2 DUP4 PUSH2 0x2F65 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x23CE JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x23EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x242D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2473 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25E3 JUMPI PUSH2 0x2490 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x82E JUMPI INVALID JUMPDEST PUSH2 0x24AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4D1A JUMP JUMPDEST DUP6 MLOAD PUSH1 0x0 SWAP1 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x24BD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x24D1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP7 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x251F JUMPI PUSH2 0x24EE DUP2 PUSH2 0x31E0 JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x24FA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x25DA JUMP JUMPDEST PUSH2 0x2528 DUP2 PUSH2 0x31E3 JUMP JUMPDEST PUSH2 0x25B5 JUMPI PUSH2 0x2535 DUP2 PUSH2 0x31E0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2560 SWAP2 SWAP1 PUSH2 0x4791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2578 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x258C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x25B0 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST PUSH2 0x25C1 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x25CD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x2479 JUMP JUMPDEST POP DUP5 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x267A JUMPI PUSH2 0x25F6 PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP8 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2623 SWAP3 SWAP2 SWAP1 PUSH2 0x47C9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x263B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x264F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2677 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3E34 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x2688 DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x31F0 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x2695 PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8BDB3913 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x26C6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4AFD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26F4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x60 SWAP3 POP DUP6 SWAP2 POP POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2713 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x273D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP6 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x27DA JUMPI PUSH2 0x2752 PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP9 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x277F SWAP3 SWAP2 SWAP1 PUSH2 0x47C9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2797 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27AB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x27D3 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3E34 JUMP JUMPDEST SWAP1 POP PUSH2 0x28D8 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x28D6 JUMPI DUP7 MLOAD PUSH1 0x0 SWAP1 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x27F6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x280A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x281D DUP2 PUSH2 0x31E3 JUMP JUMPDEST PUSH2 0x28AA JUMPI PUSH2 0x282A DUP2 PUSH2 0x31E0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2855 SWAP2 SWAP1 PUSH2 0x4791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x286D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2881 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x28A5 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST PUSH2 0x28B6 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x28C2 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x27DD JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1BF3 JUMPI PUSH2 0x2935 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x28F2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8A3 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x290B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x291F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x31CA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x28DB JUMP JUMPDEST PUSH2 0x2946 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x2957 JUMPI PUSH2 0x2954 DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x29BA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x298F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x29BA DUP5 PUSH32 0x0 DUP5 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDE0E9A3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xDE0E9A3E SWAP1 PUSH2 0x2A22 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DDC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A50 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2A74 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0xB9D JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0xB49 SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH2 0x2AF6 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x2B07 JUMPI PUSH2 0x2B04 DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B56 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2B7A SWAP2 SWAP1 PUSH2 0x3B82 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x2BBF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x2BB4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x2BBF DUP6 DUP3 DUP6 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x2C06 SWAP1 DUP10 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C34 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2C58 SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0xB6B55F2500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xB6B55F25 SWAP1 PUSH2 0x2C9E SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DDC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CCC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x2D18 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D44 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2D68 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x2353 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2E46 JUMPI CALLER DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x2DCA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xA0 MUL ADD PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2DE2 SWAP2 SWAP1 PUSH2 0x3B66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2E22 JUMPI POP ADDRESS DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x2DFF JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xA0 MUL ADD PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2E17 SWAP2 SWAP1 PUSH2 0x3B66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x2E3E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2DB5 JUMP JUMPDEST POP PUSH2 0x2E4F PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2E7D SWAP3 SWAP2 SWAP1 PUSH2 0x49B9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1187 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2EB3 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x2EC4 JUMPI PUSH2 0x2EC1 DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x2F07 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x2EFC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x2F07 DUP5 DUP7 DUP5 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBA08765200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xBA087652 SWAP1 PUSH2 0x1238 SWAP1 DUP7 SWAP1 DUP9 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4DFC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F5E DUP3 PUSH2 0x3217 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 DUP3 AND EQ JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2FBE DUP5 PUSH2 0x3217 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2FCB DUP5 PUSH2 0x322E JUMP JUMPDEST ISZERO PUSH2 0x2F5E JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2FEA DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x3275 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x3003 SWAP1 PUSH2 0x31E0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3040 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3045 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x2122 DUP2 PUSH2 0x1A4 PUSH2 0x3275 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3060 DUP4 PUSH2 0x3287 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SGT PUSH2 0x307A JUMPI DUP2 PUSH1 0x0 SUB PUSH2 0x307C JUMP JUMPDEST DUP2 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH2 0x308C JUMPI PUSH2 0x2122 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x30BC JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3107 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0xBB5 DUP6 DUP4 DUP4 PUSH2 0x32E5 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x313C SWAP2 SWAP1 PUSH2 0x4742 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3179 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x317E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x318D DUP3 DUP3 PUSH2 0x341F JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 DUP1 ISZERO PUSH2 0x31A9 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x31BF JUMPI PUSH2 0x31B8 DUP3 PUSH2 0x3449 JUMP JUMPDEST SWAP1 POP PUSH2 0x307C JUMP JUMPDEST PUSH2 0x307C PUSH2 0x136 PUSH2 0x3486 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31DA DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x3275 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 DUP1 ISZERO PUSH2 0x31FD JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x320C JUMPI PUSH2 0x31B8 DUP3 PUSH2 0x34B3 JUMP JUMPDEST PUSH2 0x307C PUSH2 0x150 PUSH2 0x3486 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3223 DUP4 PUSH2 0x3287 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x3283 JUMPI PUSH2 0x3283 DUP2 PUSH2 0x3486 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x3294 DUP4 PUSH2 0x34FC JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x32C6 SWAP3 SWAP2 SWAP1 PUSH2 0x4783 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x32FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3339 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x3326 PUSH2 0x374A JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x331E JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x33D1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3367 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3389 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x33BE JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x333F JUMP JUMPDEST POP PUSH2 0x33DA PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3405 SWAP2 SWAP1 PUSH2 0x4A67 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x342E JUMPI POP DUP1 PUSH2 0x307C JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x343E JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x307C PUSH2 0x1AE PUSH2 0x3486 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x3456 DUP4 PUSH2 0x351F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3466 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x347D JUMPI PUSH2 0x3475 DUP4 PUSH2 0x3535 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2FAB JUMP JUMPDEST DUP3 SWAP2 POP POP PUSH2 0x2FAB JUMP JUMPDEST PUSH2 0x34B0 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x35E3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x34C0 DUP4 PUSH2 0x351F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x34D0 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x34DF JUMPI PUSH2 0x3475 DUP4 PUSH2 0x3644 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x34ED JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x347D JUMPI PUSH2 0x3475 DUP4 PUSH2 0x36A7 JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x307C SWAP2 SWAP1 PUSH2 0x4258 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x3543 DUP5 PUSH2 0x36FA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x35A9 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3562 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3575 DUP2 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x35A0 JUMPI PUSH2 0x3583 DUP2 PUSH2 0x2FB0 JUMP JUMPDEST DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x358F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 SWAP3 POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x354B JUMP JUMPDEST POP DUP1 PUSH2 0x35B5 JUMPI DUP5 PUSH2 0x318D JUMP JUMPDEST PUSH1 0x1 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x35CB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B71 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x3652 DUP5 PUSH2 0x371D JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x365F DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x369D JUMPI PUSH2 0x366D DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3685 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B50 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x2FAB JUMP JUMPDEST DUP4 SWAP3 POP POP POP PUSH2 0x2FAB JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x36B4 DUP4 PUSH2 0x3734 JUMP JUMPDEST SWAP1 POP PUSH2 0x36BF DUP2 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x347D JUMPI PUSH2 0x36CD DUP2 PUSH2 0x2FB0 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x36E3 SWAP3 SWAP2 SWAP1 PUSH2 0x4B39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x2FAB JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3712 SWAP2 SWAP1 PUSH2 0x42D7 JUMP JUMPDEST SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3712 SWAP2 SWAP1 PUSH2 0x42A1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2F5E SWAP2 SWAP1 PUSH2 0x4274 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x307C DUP2 PUSH2 0x4EAF JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3796 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x37AD JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x37C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x37DE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x37F1 PUSH2 0x37EC DUP3 PUSH2 0x4E42 JUMP JUMPDEST PUSH2 0x4E1B JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x3812 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x383A JUMPI DUP2 CALLDATALOAD PUSH2 0x3828 DUP2 PUSH2 0x4EAF JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3815 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3855 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3863 PUSH2 0x37EC DUP3 PUSH2 0x4E42 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x383A JUMPI DUP2 CALLDATALOAD DUP8 ADD PUSH1 0xA0 DUP1 PUSH1 0x1F NOT DUP4 DUP13 SUB ADD SLT ISZERO PUSH2 0x3895 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x389E DUP2 PUSH2 0x4E1B JUMP JUMPDEST DUP6 DUP4 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 ADD CALLDATALOAD DUP8 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP6 ADD CALLDATALOAD DUP3 DUP5 ADD MSTORE PUSH1 0x80 SWAP2 POP DUP2 DUP6 ADD CALLDATALOAD DUP2 DUP5 ADD MSTORE POP DUP3 DUP5 ADD CALLDATALOAD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x38E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38EE DUP13 DUP9 DUP6 DUP8 ADD ADD PUSH2 0x3A10 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP7 MSTORE POP POP SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3874 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3917 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x392E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0x40 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x37C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3959 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3967 PUSH2 0x37EC DUP3 PUSH2 0x4E42 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x3988 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x383A JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x398B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x39B7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x39C5 PUSH2 0x37EC DUP3 PUSH2 0x4E42 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x39E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x383A JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x39E9 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x307C DUP2 PUSH2 0x4EC4 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3A20 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3A36 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3A49 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x4E1B JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3A60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 DUP2 LT PUSH2 0x307C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x307C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3AA8 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x3AB2 PUSH1 0x80 PUSH2 0x4E1B JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3ACC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3AD8 DUP6 DUP4 DUP7 ADD PUSH2 0x37CE JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3AEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3AFA DUP6 DUP4 DUP7 ADD PUSH2 0x3949 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3B13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B20 DUP5 DUP3 DUP6 ADD PUSH2 0x3A10 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0x3B33 DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0x3A05 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3B4F JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x307C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3B77 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2F5E DUP2 PUSH2 0x4EAF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3B93 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2F5E DUP2 PUSH2 0x4EAF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3BB3 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3BBE DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3BCE DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3BF8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3C03 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3C13 DUP2 PUSH2 0x4EC4 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3C2F JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3C42 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3C50 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3C61 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3C84 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3C8F DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3CB8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3CCE JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3CDA DUP7 DUP3 DUP8 ADD PUSH2 0x3785 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP PUSH1 0x20 SWAP6 SWAP1 SWAP6 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D00 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3D16 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3D22 DUP6 DUP3 DUP7 ADD PUSH2 0x3785 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D40 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3D56 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x3D66 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x3D74 PUSH2 0x37EC DUP3 PUSH2 0x4E42 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x3D90 JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x3DB2 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x3D94 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3DD2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3DE9 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3DFC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3E0A JUMPI DUP4 DUP5 REVERT JUMPDEST DUP8 PUSH1 0x20 PUSH1 0xA0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x3E1E JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP9 SWAP1 SWAP8 POP SWAP6 SWAP1 SWAP2 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3E45 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3E5B JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3E67 DUP5 DUP3 DUP6 ADD PUSH2 0x39A7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3E80 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2F5E DUP2 PUSH2 0x4EC4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3EA3 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3EAE DUP2 PUSH2 0x4EC4 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x3EBE DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x3ED4 DUP9 PUSH1 0x60 DUP10 ADD PUSH2 0x3B55 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3F08 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH2 0x3F19 DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0x3A79 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x3F29 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x3F39 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3F55 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3F61 DUP12 DUP4 DUP13 ADD PUSH2 0x3A97 JUMP JUMPDEST SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3F76 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3F83 DUP11 DUP3 DUP12 ADD PUSH2 0x3906 JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3FB0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH2 0x3FC1 DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0x3A79 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x3FD1 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x3FE1 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3FFC JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4008 DUP11 DUP3 DUP12 ADD PUSH2 0x3A97 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4041 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x404C DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x405C DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH2 0x407A DUP2 PUSH2 0x4EC4 JUMP JUMPDEST SWAP4 POP PUSH2 0x4089 DUP11 PUSH1 0xA0 DUP12 ADD PUSH2 0x3B55 JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x40C0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x40CB DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x40DB DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0x40F8 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0x3B55 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4126 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4131 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4156 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4161 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x4171 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x4181 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x41AE JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x41B9 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x41C9 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x41D9 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4201 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x420C DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x421C DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x422C DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x4243 DUP2 PUSH2 0x4EC4 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4269 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2F5E DUP2 PUSH2 0x4ED2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4286 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4291 DUP2 PUSH2 0x4ED2 JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x42B5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x42C0 DUP2 PUSH2 0x4ED2 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD SWAP1 SWAP7 SWAP5 SWAP6 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x42EB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x42F6 DUP2 PUSH2 0x4ED2 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4312 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x431E DUP7 DUP3 DUP8 ADD PUSH2 0x39A7 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x4350 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x435A DUP14 DUP14 PUSH2 0x3A88 JUMP JUMPDEST SWAP11 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 PUSH1 0x20 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x4375 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4385 DUP15 PUSH1 0x20 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x3845 JUMP JUMPDEST SWAP11 POP DUP1 PUSH1 0x40 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x4397 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x43A7 DUP15 PUSH1 0x40 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x3785 JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH2 0x43B9 DUP15 PUSH1 0x60 DUP16 ADD PUSH2 0x3B3E JUMP JUMPDEST SWAP8 POP DUP1 PUSH1 0xE0 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x43CB JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x43DB DUP15 PUSH1 0xE0 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x3785 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP5 POP PUSH2 0x120 DUP14 ADD CALLDATALOAD SWAP4 POP PUSH2 0x140 DUP14 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x4401 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x4413 DUP14 PUSH2 0x140 DUP15 ADD CALLDATALOAD DUP15 ADD PUSH2 0x3906 JUMP JUMPDEST DUP2 SWAP4 POP DUP1 SWAP3 POP POP POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4444 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x445B JUMPI DUP6 DUP7 REVERT JUMPDEST SWAP1 DUP9 ADD SWAP1 PUSH1 0xC0 DUP3 DUP12 SUB SLT ISZERO PUSH2 0x446E JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4478 PUSH1 0xC0 PUSH2 0x4E1B JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH2 0x4489 DUP12 PUSH1 0x20 DUP6 ADD PUSH2 0x3A88 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x449C DUP2 PUSH2 0x4EAF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x44AE DUP12 PUSH1 0x60 DUP6 ADD PUSH2 0x377A JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x44CE JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH2 0x44DA DUP13 DUP3 DUP7 ADD PUSH2 0x3A10 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP DUP1 SWAP9 POP POP POP POP PUSH2 0x44F3 DUP9 PUSH1 0x20 DUP10 ADD PUSH2 0x3B3E JUMP JUMPDEST SWAP6 SWAP9 SWAP6 SWAP8 POP POP POP POP PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP4 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP4 PUSH1 0xE0 DUP3 ADD CALLDATALOAD SWAP4 POP PUSH2 0x100 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x452A JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4542 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x455B JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x45B6 JUMPI DUP2 CALLDATALOAD PUSH2 0x459B DUP2 PUSH2 0x4EAF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4588 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x45B6 JUMPI DUP2 CALLDATALOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x45D0 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x45B6 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x45FF JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x4639 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4E6F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0xA0 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4692 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x466D JUMP JUMPDEST POP POP DUP3 DUP6 ADD MLOAD SWAP2 POP DUP6 DUP2 SUB DUP4 DUP8 ADD MSTORE PUSH2 0x46AB DUP2 DUP4 PUSH2 0x45EC JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x46C6 DUP3 DUP3 PUSH2 0x4621 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x46DB PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x461B JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x46EE DUP2 PUSH2 0x4EAF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x470A DUP3 PUSH2 0x4EC4 JUMP JUMPDEST SWAP1 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x4721 DUP3 PUSH2 0x4EAF JUMP JUMPDEST AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD CALLDATALOAD PUSH2 0x4735 DUP2 PUSH2 0x4EC4 JUMP JUMPDEST DUP1 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4754 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x4E6F JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x4770 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x4E6F JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND DUP5 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP7 ADD MSTORE DUP3 DUP7 MLOAD DUP1 DUP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP2 POP DUP3 DUP9 ADD SWAP5 POP DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4815 JUMPI DUP6 MLOAD DUP6 AND DUP4 MSTORE SWAP5 DUP4 ADD SWAP5 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x47F7 JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE SWAP7 SWAP1 SWAP8 AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE ISZERO ISZERO PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 ISZERO ISZERO PUSH1 0x20 DUP8 ADD MSTORE SWAP4 SWAP1 SWAP6 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 DUP5 PUSH1 0x60 DUP4 ADD DUP3 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x499C JUMPI PUSH1 0x20 DUP4 CALLDATALOAD PUSH2 0x4981 DUP2 PUSH2 0x4EAF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x496C JUMP JUMPDEST POP DUP1 SWAP3 POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x40 DUP1 DUP5 ADD DUP7 DUP5 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x4A5A JUMPI DUP2 CALLDATALOAD PUSH2 0x49E2 DUP2 PUSH2 0x4ED2 JUMP JUMPDEST PUSH2 0x49EB DUP2 PUSH2 0x4E9B JUMP JUMPDEST DUP4 MSTORE DUP2 DUP6 ADD CALLDATALOAD PUSH2 0x49FA DUP2 PUSH2 0x4EAF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP7 ADD MSTORE DUP2 DUP5 ADD CALLDATALOAD DUP5 DUP5 ADD MSTORE PUSH1 0x60 PUSH2 0x4A1D DUP2 DUP5 ADD DUP5 PUSH2 0x4E62 JUMP JUMPDEST PUSH2 0x4A29 DUP3 DUP7 ADD DUP3 PUSH2 0x456C JUMP JUMPDEST POP POP PUSH1 0x80 PUSH2 0x4A39 DUP2 DUP5 ADD DUP5 PUSH2 0x4E62 JUMP JUMPDEST PUSH2 0x4A45 DUP3 DUP7 ADD DUP3 PUSH2 0x456C JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x49CF JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4AF0 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH2 0x4A99 DUP2 PUSH2 0x4E9B JUMP JUMPDEST DUP6 MSTORE DUP1 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP7 ADD MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP7 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD PUSH2 0x4AC6 DUP3 DUP9 ADD DUP3 PUSH2 0x456C JUMP JUMPDEST POP POP PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 PUSH2 0x4ADB DUP7 DUP3 ADD DUP4 PUSH2 0x456C JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP4 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4A84 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x4B2F PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x464D JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4B46 DUP5 PUSH2 0x4E9B JUMP JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4B5D DUP6 PUSH2 0x4E9B JUMP JUMPDEST SWAP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B7C DUP6 PUSH2 0x4E9B JUMP JUMPDEST DUP5 DUP3 MSTORE PUSH1 0x60 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4B93 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x45EC JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP1 DUP4 ADD PUSH2 0x4BB4 DUP13 PUSH2 0x4EA5 JUMP JUMPDEST DUP12 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD SWAP1 DUP2 SWAP1 MSTORE PUSH2 0x140 DUP1 DUP6 ADD SWAP3 DUP3 DUP2 MUL DUP7 ADD SWAP1 SWAP2 ADD SWAP2 DUP13 DUP3 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4C5B JUMPI DUP8 DUP6 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC0 ADD DUP7 MSTORE DUP2 MLOAD DUP1 MLOAD DUP7 MSTORE DUP5 DUP2 ADD MLOAD DUP6 DUP8 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD PUSH1 0xA0 SWAP2 DUP8 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x4C47 DUP2 DUP9 ADD DUP4 PUSH2 0x4621 JUMP JUMPDEST SWAP8 DUP7 ADD SWAP8 SWAP7 POP POP POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4BDB JUMP JUMPDEST POP POP POP POP DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x4C72 DUP2 DUP11 DUP13 PUSH2 0x4579 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4C82 PUSH1 0x60 DUP5 ADD DUP9 PUSH2 0x46E3 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x4C95 DUP2 DUP7 DUP9 PUSH2 0x45C1 JUMP JUMPDEST SWAP2 POP POP DUP3 PUSH2 0x100 DUP4 ADD MSTORE SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742073656E64657200000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x696E76616C696420636861696E6564207265666572656E636500000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 MSTORE DUP6 MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x4D6C DUP2 PUSH2 0x4EA5 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x60 DUP8 ADD MLOAD AND PUSH2 0x140 DUP4 ADD MSTORE PUSH1 0x80 DUP7 ADD MLOAD PUSH2 0x160 DUP4 ADD MSTORE PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 PUSH2 0x180 DUP5 ADD MSTORE PUSH2 0x4DBA PUSH2 0x1A0 DUP5 ADD DUP3 PUSH2 0x4621 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4DCA PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x46E3 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4E3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4E58 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x2F5E DUP2 PUSH2 0x4EAF JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4E8A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4E72 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x4C6 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x34B0 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x34B0 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x34B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x34B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x34B0 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP 0xB3 0x2F NOT AND 0xDD 0x2B 0xFB GASPRICE SAR EXP NUMBER 0xF7 SWAP6 SWAP16 PUSH31 0x894F8A708F95BA38DDA2A8251D8BB9564736F6C6343000701003360C06040 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x787 CODESIZE SUB DUP1 PUSH2 0x787 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH2 0xA3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x64 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x6F DUP2 PUSH2 0x8B JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x80 DUP2 PUSH2 0x8B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x6B3 PUSH2 0xD4 PUSH1 0x0 CODECOPY DUP1 PUSH1 0xFC MSTORE DUP1 PUSH2 0x20F MSTORE POP DUP1 PUSH1 0x58 MSTORE DUP1 PUSH2 0x120 MSTORE POP PUSH2 0x6B3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7678922E EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xC8 JUMPI PUSH2 0x83 JUMP JUMPDEST CALLDATASIZE PUSH2 0x83 JUMPI PUSH2 0x81 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x206 PUSH2 0xE8 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0xFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0x11E JUMP JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x480 JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x52F JUMP JUMPDEST DUP2 PUSH2 0xF6 JUMPI PUSH2 0xF6 DUP2 PUSH2 0x26E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x14C PUSH2 0x29B JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x197 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x182 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x257 JUMPI PUSH2 0x238 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1B4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x5E3 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 SWAP2 POP POP PUSH2 0x2B4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x244 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x19D JUMP JUMPDEST POP PUSH2 0x260 PUSH2 0x337 JUMP JUMPDEST PUSH2 0x268 PUSH2 0x348 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x298 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x34F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x2AD PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x31A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x31F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x32E DUP3 DUP3 PUSH2 0x3CA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH2 0x298 CALLER DUP3 PUSH2 0x3F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x3D9 JUMPI POP DUP1 PUSH2 0x268 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x3E9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x268 PUSH2 0x1AE PUSH2 0x26E JUMP JUMPDEST PUSH2 0x403 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x429 SWAP1 PUSH2 0x50B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x46B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x47B DUP2 PUSH2 0x1A4 PUSH2 0xE8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x492 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4BC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x4CA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x4DD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x501 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x64D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5D6 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP8 MSTORE PUSH2 0x599 DUP2 DUP10 DUP10 ADD DUP11 DUP6 ADD PUSH2 0x64D JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP6 SWAP1 SWAP6 ADD DUP7 ADD SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x554 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x617 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x631 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x668 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x650 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MOD EXTCODEHASH 0xDA 0xAA 0xD6 0xC7 RETURN 0x2F 0xB6 0xDD MSTORE8 CALL STOP 0x26 SWAP11 SWAP15 LOG1 PUSH13 0x7241C4A9587B1F83F82A35B542 TIMESTAMP PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1310:442:64:-:0;;;7706:42:69;7657:91;;1523:227:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1657:6;1678;1637:5;2010::69;-1:-1:-1;;;;;2010:10:69;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1450:12:60;;;;;;;;2034:14:69;;;;;::::1;::::0;2072:41:::1;::::0;2043:5;;2107:4:::1;::::0;2072:41:::1;::::0;::::1;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;;;;2058:55:69::1;::::0;;;;;::::1;::::0;1585:32:71;;;;;;;;-1:-1:-1;;;;;;1728:19:73;;:66;;1792:1;1728:66;;;1766:6;-1:-1:-1;;;;;1750:30:73;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1719:75:73;;;;;;;;1804:34;;;;;;-1:-1:-1;1310:442:64;;-1:-1:-1;;1310:442:64;;;;;;;;;:::o;874:641:-1:-;;;;1076:2;1064:9;1055:7;1051:23;1047:32;1044:2;;;-1:-1;;1082:12;1044:2;462:6;456:13;474:48;516:5;474:48;:::i;:::-;1260:2;1325:22;;285:13;1134:89;;-1:-1;303:48;285:13;303:48;:::i;:::-;1394:2;1467:22;;106:13;1268:89;;-1:-1;124:56;106:13;124:56;:::i;:::-;1402:97;;;;1038:477;;;;;:::o;1522:291::-;;1651:2;1639:9;1630:7;1626:23;1622:32;1619:2;;;-1:-1;;1657:12;1619:2;632:6;626:13;644:47;685:5;644:47;:::i;:::-;1709:88;1613:200;-1:-1;;;1613:200::o;2403:363::-;-1:-1;;;;;3505:54;;;2326:65;;3505:54;;2752:2;2737:18;;2191:37;2573:2;2558:18;;2544:222::o;3859:163::-;-1:-1;;;;;3505:54;;3941:58;;3931:2;;4013:1;;4003:12;3931:2;3925:97;:::o;:::-;1310:442:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"9655":[{"length":32,"start":6837},{"length":32,"start":7170}],"9657":[{"length":32,"start":6581}],"10025":[{"length":32,"start":12950}],"10248":[{"length":32,"start":3660},{"length":32,"start":6923}],"10586":[{"length":32,"start":2327},{"length":32,"start":2412},{"length":32,"start":3034},{"length":32,"start":3257},{"length":32,"start":10934}],"10588":[{"length":32,"start":1305},{"length":32,"start":1453},{"length":32,"start":1555},{"length":32,"start":2457},{"length":32,"start":2633},{"length":32,"start":2834},{"length":32,"start":10645},{"length":32,"start":10733}]},"linkReferences":{},"object":"6080604052600436106101c25760003560e01c806380db15bd116100f7578063b6d2473711610095578063e8210e3c11610064578063e8210e3c146103cb578063ecc02637146103de578063efe69108146103f1578063f3cab68514610404576101c2565b8063b6d2473714610372578063d293f29014610392578063d80952d5146103a5578063db4c0e91146103b8576101c2565b80638d928af8116100d15780638d928af8146103245780638fe4624f14610339578063959fc17a1461034c578063abf6d3991461035f576101c2565b806380db15bd146102eb5780638c57198b146102fe5780638d64cfbc14610311576101c2565b8063433b0865116101645780636d307ea81161013e5780636d307ea8146102875780637ab6e03c1461029a5780637bc008f5146102ad5780637fd0e5d5146102c0576101c2565b8063433b08651461024e578063611b90dd1461026157806365ca480414610274576101c2565b80631c982441116101a05780631c982441146102025780632cbec84e146102155780632e6272ea146102285780633f85d3901461023b576101c2565b80630e248fea146101c75780631089e5e3146101dc57806318369446146101ef575b600080fd5b6101da6101d5366004613cee565b610431565b005b6101da6101ea366004613c70565b6104cc565b6101da6101fd36600461432f565b6106b6565b6101da610210366004613b9e565b6108bf565b6101da610223366004613c70565b610bbc565b6101da61023636600461442b565b610cf0565b6101da610249366004613ca4565b610e19565b6101da61025c3660046141e9565b610ee2565b6101da61026f36600461413f565b611191565b6101da610282366004614199565b6112ac565b6101da61029536600461413f565b61149f565b6101da6102a83660046141e9565b6116c1565b6101da6102bb366004614199565b6117c7565b3480156102cc57600080fd5b506102d56119b3565b6040516102e29190614791565b60405180910390f35b6101da6102f9366004613be3565b6119d7565b6101da61030c366004613e8b565b611adb565b6101da61031f3660046140a6565b611b86565b34801561033057600080fd5b506102d5611c00565b6101da610347366004613f96565b611c24565b6101da61035a366004614025565b611e4e565b6101da61036d36600461413f565b611ecb565b34801561037e57600080fd5b506101da61038d366004614114565b612081565b6101da6103a036600461413f565b612127565b6101da6103b3366004613eee565b6123af565b6101da6103c6366004613b9e565b61293d565b6101da6103d936600461413f565b612aed565b6101da6103ec366004613dbe565b612db2565b6101da6103ff36600461413f565b612eaa565b34801561041057600080fd5b5061042461041f366004614519565b612f53565b6040516102e29190614ddc565b8060005b818110156104c65783838281811061044957fe5b905060200201602081019061045e9190613b66565b6001600160a01b03166384e9bd7e336040518263ffffffff1660e01b81526004016104899190614791565b600060405180830381600087803b1580156104a357600080fd5b505af11580156104b7573d6000803e3d6000fd5b50505050806001019050610435565b50505050565b6104d582612f65565b156104e6576104e382612fb0565b91505b6040517fb0e389000000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b0e389009061054e908690600401614ddc565b60206040518083038186803b15801561056657600080fd5b505afa15801561057a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059e9190614531565b90506105d36001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684612fdb565b6001600160a01b038416301461069e576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb9061064a90879085906004016148f1565b602060405180830381600087803b15801561066457600080fd5b505af1158015610678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069c9190613e6f565b505b6106a782612f65565b156104c6576104c68282613055565b336106c46020890189613b66565b6001600160a01b031614806106ed5750306106e26020890189613b66565b6001600160a01b0316145b6107125760405162461bcd60e51b815260040161070990614cac565b60405180910390fd5b60005b8a518110156107775760008b828151811061072c57fe5b602002602001015160600151905061074381612f65565b1561076e5761075181612fb0565b8c838151811061075d57fe5b602002602001015160600181815250505b50600101610715565b506060610782611c00565b6001600160a01b031663945bcec9858e8e8e8e8e8e8e8e6040518a63ffffffff1660e01b81526004016107bc989796959493929190614ba3565b6000604051808303818588803b1580156107d557600080fd5b505af11580156107e9573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526108129190810190613d2e565b905060005b828110156108b05761083d84848381811061082e57fe5b90506040020160200135612f65565b6108595760405162461bcd60e51b815260040161070990614d1a565b6108a884848381811061086857fe5b905060400201602001356108a38487878681811061088257fe5b905060400201600001358151811061089657fe5b6020026020010151613068565b613055565b600101610817565b50505050505050505050505050565b6108c882612f65565b156108d9576108d682612fb0565b91505b6001600160a01b038416301461093c576001600160a01b03841633146109115760405162461bcd60e51b815260040161070990614cac565b61093c847f000000000000000000000000000000000000000000000000000000000000000084613082565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906109c3907f00000000000000000000000000000000000000000000000000000000000000009086906004016148f1565b602060405180830381600087803b1580156109dd57600080fd5b505af11580156109f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a159190613e6f565b506040517fea598cb00000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ea598cb090610a7e908690600401614ddc565b602060405180830381600087803b158015610a9857600080fd5b505af1158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190614531565b90506001600160a01b0384163014610b9d576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90610b4990879085906004016148f1565b602060405180830381600087803b158015610b6357600080fd5b505af1158015610b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9b9190613e6f565b505b610ba682612f65565b15610bb557610bb58282613055565b5050505050565b610bc582612f65565b15610bd657610bd382612fb0565b91505b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a1903eab84306040518363ffffffff1660e01b8152600401610c259190614791565b6020604051808303818588803b158015610c3e57600080fd5b505af1158015610c52573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c779190614531565b90506001600160a01b038416301461069e576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb9061064a90879085906004016148f1565b33610cfe6020870187613b66565b6001600160a01b03161480610d27575030610d1c6020870187613b66565b6001600160a01b0316145b610d435760405162461bcd60e51b815260040161070990614cac565b610d508660800151612f65565b15610d6857610d628660800151612fb0565b60808701525b6000610d72611c00565b6001600160a01b03166352bbbe2984898989896040518663ffffffff1660e01b8152600401610da49493929190614d51565b6020604051808303818588803b158015610dbd57600080fd5b505af1158015610dd1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610df69190614531565b9050610e0182612f65565b15610e1057610e108282613055565b50505050505050565b6040517f3b9f73840000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633b9f738490610e8590879087903390600401614959565b602060405180830381600087803b158015610e9f57600080fd5b505af1158015610eb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed79190614531565b90506106a782612f65565b610eeb83612f65565b15610efc57610ef983612fb0565b92505b600082610f7b57866001600160a01b03166351c0e0616040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f3e57600080fd5b505af1158015610f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f769190613b82565b610fee565b866001600160a01b0316634800d97f6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fb657600080fd5b505af1158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee9190613b82565b90506001600160a01b0386163014611033576001600160a01b03861633146110285760405162461bcd60e51b815260040161070990614cac565b611033868286613082565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b39061107a908a9088906004016148f1565b602060405180830381600087803b15801561109457600080fd5b505af11580156110a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cc9190613e6f565b506040517f2f2cab870000000000000000000000000000000000000000000000000000000081526000906001600160a01b03891690632f2cab879061111b908990899086908a9060040161492d565b602060405180830381600087803b15801561113557600080fd5b505af1158015611149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116d9190614531565b905061117883612f65565b15611187576111878382613055565b5050505050505050565b61119a82612f65565b156111ab576111a882612fb0565b91505b6001600160a01b03841630146111ee576001600160a01b03841633146111e35760405162461bcd60e51b815260040161070990614cac565b6111ee848684613082565b6040517fea785a5e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b0387169063ea785a5e9061123890879087906004016148f1565b602060405180830381600087803b15801561125257600080fd5b505af1158015611266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128a9190614531565b905061129582612f65565b156112a4576112a48282613055565b505050505050565b6112b581612f65565b156112c6576112c381612fb0565b90505b6001600160a01b0383163014611309576001600160a01b03831633146112fe5760405162461bcd60e51b815260040161070990614cac565b611309838583613082565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526001600160a01b03851690632e1a7d4d9061134e908490600401614ddc565b600060405180830381600087803b15801561136857600080fd5b505af115801561137c573d6000803e3d6000fd5b505050506001600160a01b03821630146104c6576000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b1580156113cb57600080fd5b505afa1580156113df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114039190613b82565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0382169063a9059cbb9061144d90869086906004016148f1565b602060405180830381600087803b15801561146757600080fd5b505af115801561147b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a49190613e6f565b6114a882612f65565b156114b9576114b682612fb0565b91505b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114f457600080fd5b505afa158015611508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152c9190613b82565b90506001600160a01b0385163014611571576001600160a01b03851633146115665760405162461bcd60e51b815260040161070990614cac565b611571858285613082565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b3906115b890899087906004016148f1565b602060405180830381600087803b1580156115d257600080fd5b505af11580156115e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160a9190613e6f565b506040517f6e553f650000000000000000000000000000000000000000000000000000000081526000906001600160a01b03881690636e553f65906116559087908990600401614de5565b602060405180830381600087803b15801561166f57600080fd5b505af1158015611683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a79190614531565b90506116b283612f65565b15610e1057610e108382613055565b6116ca83612f65565b156116db576116d883612fb0565b92505b6001600160a01b038516301461171e576001600160a01b03851633146117135760405162461bcd60e51b815260040161070990614cac565b61171e858785613082565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081526000906001600160a01b0388169063ead5d3599061176a9088908890889060040161490a565b6040805180830381600087803b15801561178357600080fd5b505af1158015611797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bb9190614549565b915050610e0182612f65565b6117d081612f65565b156117e1576117de81612fb0565b90505b6000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561181c57600080fd5b505afa158015611830573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118549190613b82565b90506001600160a01b0384163014611899576001600160a01b038416331461188e5760405162461bcd60e51b815260040161070990614cac565b611899848284613082565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b3906118e090889086906004016148f1565b602060405180830381600087803b1580156118fa57600080fd5b505af115801561190e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119329190613e6f565b506040517f6e553f650000000000000000000000000000000000000000000000000000000081526001600160a01b03861690636e553f659061197a9085908790600401614de5565b600060405180830381600087803b15801561199457600080fd5b505af11580156119a8573d6000803e3d6000fd5b505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0384163014806119ec575082155b611a085760405162461bcd60e51b815260040161070990614ce3565b606063fa6e671d60e01b338686604051602401611a27939291906147a5565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935251611a9692869186910161475e565b60408051601f1981840301815291905290506112a46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168261311e565b6040517fc65427940000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c654279490611b4c9030908a908a908a908a908a908a906004016148ad565b600060405180830381600087803b158015611b6657600080fd5b505af1158015611b7a573d6000803e3d6000fd5b50505050505050505050565b866001600160a01b031663d505accf87611b9e611c00565b88888888886040518863ffffffff1660e01b8152600401611bc5979695949392919061486c565b600060405180830381600087803b158015611bdf57600080fd5b505af1158015611bf3573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b038516331480611c4357506001600160a01b03851630145b611c5f5760405162461bcd60e51b815260040161070990614cac565b6000611c6a88613196565b90506000611c7783612f65565b611c82576000611d17565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038316906370a0823190611cc7908990600401614791565b60206040518083038186803b158015611cdf57600080fd5b505afa158015611cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d179190614531565b9050611d2788866040015161319c565b6040860152611d34611c00565b6001600160a01b031663b95cac28858b8a8a8a6040518663ffffffff1660e01b8152600401611d669493929190614afd565b6000604051808303818588803b158015611d7f57600080fd5b505af1158015611d93573d6000803e3d6000fd5b5050505050611da183612f65565b156119a8576040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038416906370a0823190611dee908a90600401614791565b60206040518083038186803b158015611e0657600080fd5b505afa158015611e1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3e9190614531565b9050611b7a846108a383856131ca565b876001600160a01b0316638fcbaf0c88611e66611c00565b8989898989896040518963ffffffff1660e01b8152600401611e8f989796959493929190614823565b600060405180830381600087803b158015611ea957600080fd5b505af1158015611ebd573d6000803e3d6000fd5b505050505050505050505050565b611ed482612f65565b15611ee557611ee282612fb0565b91505b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611f2057600080fd5b505afa158015611f34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f589190613b82565b90506001600160a01b0385163014611f9d576001600160a01b0385163314611f925760405162461bcd60e51b815260040161070990614cac565b611f9d858285613082565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b390611fe490899087906004016148f1565b602060405180830381600087803b158015611ffe57600080fd5b505af1158015612012573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120369190613e6f565b506040517f2f4f21e20000000000000000000000000000000000000000000000000000000081526000906001600160a01b03881690632f4f21e29061165590889088906004016148f1565b61208a81612f65565b1561209b5761209881612fb0565b90505b816001600160a01b031663095ea7b36120b2611c00565b836040518363ffffffff1660e01b81526004016120d09291906148f1565b602060405180830381600087803b1580156120ea57600080fd5b505af11580156120fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121229190613e6f565b505050565b61213082612f65565b156121415761213e82612fb0565b91505b6001600160a01b0384163014612184576001600160a01b03841633146121795760405162461bcd60e51b815260040161070990614cac565b612184848684613082565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121bf57600080fd5b505afa1580156121d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f79190613b82565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03871690632e1a7d4d9061223f908690600401614ddc565b600060405180830381600087803b15801561225957600080fd5b505af115801561226d573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841691506370a08231906122b9903090600401614791565b60206040518083038186803b1580156122d157600080fd5b505afa1580156122e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123099190614531565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0383169063a9059cbb9061235390889085906004016148f1565b602060405180830381600087803b15801561236d57600080fd5b505af1158015612381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a59190613e6f565b506116b283612f65565b6001600160a01b0385163314806123ce57506001600160a01b03851630145b6123ea5760405162461bcd60e51b815260040161070990614cac565b60608167ffffffffffffffff8111801561240357600080fd5b5060405190808252806020026020018201604052801561242d578160200160208202803683370190505b50905060608267ffffffffffffffff8111801561244957600080fd5b50604051908082528060200260200182016040528015612473578160200160208202803683370190505b50905060005b838110156125e35761249085858381811061082e57fe5b6124ac5760405162461bcd60e51b815260040161070990614d1a565b85516000908686848181106124bd57fe5b90506040020160000135815181106124d157fe5b6020026020010151905086606001511561251f576124ee816131e0565b8483815181106124fa57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506125da565b612528816131e3565b6125b557612535816131e0565b6001600160a01b03166370a08231896040518263ffffffff1660e01b81526004016125609190614791565b60206040518083038186803b15801561257857600080fd5b505afa15801561258c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b09190614531565b6125c1565b876001600160a01b0316315b8383815181106125cd57fe5b6020026020010181815250505b50600101612479565b5084606001511561267a576125f6611c00565b6001600160a01b0316630f5a6efa87846040518363ffffffff1660e01b81526004016126239291906147c9565b60006040518083038186803b15801561263b57600080fd5b505afa15801561264f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126779190810190613e34565b90505b6126888886604001516131f0565b6040860152612695611c00565b6001600160a01b0316638bdb39138a8989896040518563ffffffff1660e01b81526004016126c69493929190614afd565b600060405180830381600087803b1580156126e057600080fd5b505af11580156126f4573d6000803e3d6000fd5b50606092508591505067ffffffffffffffff8111801561271357600080fd5b5060405190808252806020026020018201604052801561273d578160200160208202803683370190505b5090508560600151156127da57612752611c00565b6001600160a01b0316630f5a6efa88856040518363ffffffff1660e01b815260040161277f9291906147c9565b60006040518083038186803b15801561279757600080fd5b505afa1580156127ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127d39190810190613e34565b90506128d8565b60005b848110156128d65786516000908787848181106127f657fe5b905060400201600001358151811061280a57fe5b6020026020010151905061281d816131e3565b6128aa5761282a816131e0565b6001600160a01b03166370a082318a6040518263ffffffff1660e01b81526004016128559190614791565b60206040518083038186803b15801561286d57600080fd5b505afa158015612881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a59190614531565b6128b6565b886001600160a01b0316315b8383815181106128c257fe5b6020908102919091010152506001016127dd565b505b60005b84811015611bf3576129358686838181106128f257fe5b905060400201602001356108a385848151811061290b57fe5b602002602001015185858151811061291f57fe5b60200260200101516131ca90919063ffffffff16565b6001016128db565b61294682612f65565b156129575761295482612fb0565b91505b6001600160a01b03841630146129ba576001600160a01b038416331461298f5760405162461bcd60e51b815260040161070990614cac565b6129ba847f000000000000000000000000000000000000000000000000000000000000000084613082565b6040517fde0e9a3e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063de0e9a3e90612a22908690600401614ddc565b602060405180830381600087803b158015612a3c57600080fd5b505af1158015612a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a749190614531565b90506001600160a01b0384163014610b9d576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90610b4990879085906004016148f1565b612af682612f65565b15612b0757612b0482612fb0565b91505b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b4257600080fd5b505afa158015612b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7a9190613b82565b90506001600160a01b0385163014612bbf576001600160a01b0385163314612bb45760405162461bcd60e51b815260040161070990614cac565b612bbf858285613082565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b390612c0690899087906004016148f1565b602060405180830381600087803b158015612c2057600080fd5b505af1158015612c34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c589190613e6f565b506040517fb6b55f250000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063b6b55f2590612c9e908690600401614ddc565b600060405180830381600087803b158015612cb857600080fd5b505af1158015612ccc573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03891691506370a0823190612d18903090600401614791565b60206040518083038186803b158015612d3057600080fd5b505afa158015612d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d689190614531565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0388169063a9059cbb9061235390889085906004016148f1565b60005b82811015612e465733848483818110612dca57fe5b905060a002016060016020810190612de29190613b66565b6001600160a01b03161480612e22575030848483818110612dff57fe5b905060a002016060016020810190612e179190613b66565b6001600160a01b0316145b612e3e5760405162461bcd60e51b815260040161070990614cac565b600101612db5565b50612e4f611c00565b6001600160a01b0316630e8e3e848285856040518463ffffffff1660e01b8152600401612e7d9291906149b9565b6000604051808303818588803b158015612e9657600080fd5b505af1158015611187573d6000803e3d6000fd5b612eb382612f65565b15612ec457612ec182612fb0565b91505b6001600160a01b0384163014612f07576001600160a01b0384163314612efc5760405162461bcd60e51b815260040161070990614cac565b612f07848684613082565b6040517fba0876520000000000000000000000000000000000000000000000000000000081526000906001600160a01b0387169063ba0876529061123890869088903090600401614dfc565b6000612f5e82613217565b9392505050565b7fba100000000000000000000000000000000000000000000000000000000000007ffff00000000000000000000000000000000000000000000000000000000000008216145b919050565b6000806000612fbe84613217565b91509150612fcb8461322e565b15612f5e57600082559392505050565b612fea814710156101a3613275565b6000826001600160a01b031682604051613003906131e0565b60006040518083038185875af1925050503d8060008114613040576040519150601f19603f3d011682016040523d82523d6000602084013e613045565b606091505b50509050612122816101a4613275565b600061306083613287565b919091555050565b600080821361307a578160000361307c565b815b92915050565b8061308c57612122565b6040805160018082528183019092526060916020808301908036833701905050905082816000815181106130bc57fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050828160008151811061310757fe5b602002602001018181525050610bb58583836132e5565b606060006060846001600160a01b03168460405161313c9190614742565b6000604051808303816000865af19150503d8060008114613179576040519150601f19603f3d011682016040523d82523d6000602084013e61317e565b606091505b509150915061318d828261341f565b95945050505050565b60601c90565b606060008380156131a957fe5b14156131bf576131b882613449565b905061307c565b61307c610136613486565b60006131da838311156001613275565b50900390565b90565b6001600160a01b03161590565b606060008380156131fd57fe5b141561320c576131b8826134b3565b61307c610150613486565b60008061322383613287565b915081549050915091565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b816132835761328381613486565b5050565b60006001613294836134fc565b7f00000000000000000000000000000000000000000000000000000000000000006040516020016132c6929190614783565b60408051808303601f1901815291905280516020909101200392915050565b6060825167ffffffffffffffff811180156132ff57600080fd5b5060405190808252806020026020018201604052801561333957816020015b61332661374a565b81526020019060019003908161331e5790505b50905060005b83518110156133d1576040805160a08101909152806003815260200185838151811061336757fe5b60200260200101516001600160a01b0316815260200184838151811061338957fe5b60200260200101518152602001866001600160a01b03168152602001306001600160a01b03168152508282815181106133be57fe5b602090810291909101015260010161333f565b506133da611c00565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b81526004016134059190614a67565b600060405180830381600087803b158015612e9657600080fd5b6060821561342e57508061307c565b81511561343e5781518083602001fd5b61307c6101ae613486565b606060006134568361351f565b9050600181600381111561346657fe5b141561347d5761347583613535565b915050612fab565b82915050612fab565b6134b0817f42414c00000000000000000000000000000000000000000000000000000000006135e3565b50565b606060006134c08361351f565b905060008160038111156134d057fe5b14156134df5761347583613644565b60018160038111156134ed57fe5b141561347d57613475836136a7565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b60008180602001905181019061307c9190614258565b6060806000613543846136fa565b915091506000805b83518110156135a957600084828151811061356257fe5b6020026020010151905061357581612f65565b156135a05761358381612fb0565b85838151811061358f57fe5b602002602001018181525050600192505b5060010161354b565b50806135b5578461318d565b600183836040516020016135cb93929190614b71565b60405160208183030381529060405295945050505050565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60606000806136528461371d565b9150915061365f82612f65565b1561369d5761366d82612fb0565b91506000828260405160200161368593929190614b50565b60405160208183030381529060405292505050612fab565b8392505050612fab565b606060006136b483613734565b90506136bf81612f65565b1561347d576136cd81612fb0565b90506001816040516020016136e3929190614b39565b604051602081830303815290604052915050612fab565b606060008280602001905181019061371291906142d7565b909590945092505050565b6000808280602001905181019061371291906142a1565b600081806020019051810190612f5e9190614274565b6040805160a081019091528060008152600060208201819052604082018190526060820181905260809091015290565b803561307c81614eaf565b60008083601f840112613796578182fd5b50813567ffffffffffffffff8111156137ad578182fd5b60208301915083602080830285010111156137c757600080fd5b9250929050565b600082601f8301126137de578081fd5b81356137f16137ec82614e42565b614e1b565b81815291506020808301908481018184028601820187101561381257600080fd5b60005b8481101561383a57813561382881614eaf565b84529282019290820190600101613815565b505050505092915050565b600082601f830112613855578081fd5b81356138636137ec82614e42565b818152915060208083019084810160005b8481101561383a578135870160a080601f19838c0301121561389557600080fd5b61389e81614e1b565b85830135815260408084013587830152606080850135828401526080915081850135818401525082840135925067ffffffffffffffff8311156138e057600080fd5b6138ee8c8885870101613a10565b90820152865250509282019290820190600101613874565b60008083601f840112613917578182fd5b50813567ffffffffffffffff81111561392e578182fd5b6020830191508360206040830285010111156137c757600080fd5b600082601f830112613959578081fd5b81356139676137ec82614e42565b81815291506020808301908481018184028601820187101561398857600080fd5b60005b8481101561383a5781358452928201929082019060010161398b565b600082601f8301126139b7578081fd5b81516139c56137ec82614e42565b8181529150602080830190848101818402860182018710156139e657600080fd5b60005b8481101561383a578151845292820192908201906001016139e9565b803561307c81614ec4565b600082601f830112613a20578081fd5b813567ffffffffffffffff811115613a36578182fd5b613a496020601f19601f84011601614e1b565b9150808252836020828501011115613a6057600080fd5b8060208401602084013760009082016020015292915050565b80356001811061307c57600080fd5b80356002811061307c57600080fd5b600060808284031215613aa8578081fd5b613ab26080614e1b565b9050813567ffffffffffffffff80821115613acc57600080fd5b613ad8858386016137ce565b83526020840135915080821115613aee57600080fd5b613afa85838601613949565b60208401526040840135915080821115613b1357600080fd5b50613b2084828501613a10565b604083015250613b338360608401613a05565b606082015292915050565b600060808284031215613b4f578081fd5b50919050565b803560ff8116811461307c57600080fd5b600060208284031215613b77578081fd5b8135612f5e81614eaf565b600060208284031215613b93578081fd5b8151612f5e81614eaf565b60008060008060808587031215613bb3578283fd5b8435613bbe81614eaf565b93506020850135613bce81614eaf565b93969395505050506040820135916060013590565b60008060008060608587031215613bf8578182fd5b8435613c0381614eaf565b93506020850135613c1381614ec4565b9250604085013567ffffffffffffffff80821115613c2f578384fd5b818701915087601f830112613c42578384fd5b813581811115613c50578485fd5b886020828501011115613c61578485fd5b95989497505060200194505050565b600080600060608486031215613c84578081fd5b8335613c8f81614eaf565b95602085013595506040909401359392505050565b600080600060408486031215613cb8578081fd5b833567ffffffffffffffff811115613cce578182fd5b613cda86828701613785565b909790965060209590950135949350505050565b60008060208385031215613d00578182fd5b823567ffffffffffffffff811115613d16578283fd5b613d2285828601613785565b90969095509350505050565b60006020808385031215613d40578182fd5b825167ffffffffffffffff811115613d56578283fd5b8301601f81018513613d66578283fd5b8051613d746137ec82614e42565b8181528381019083850185840285018601891015613d90578687fd5b8694505b83851015613db2578051835260019490940193918501918501613d94565b50979650505050505050565b600080600060408486031215613dd2578081fd5b833567ffffffffffffffff80821115613de9578283fd5b818601915086601f830112613dfc578283fd5b813581811115613e0a578384fd5b87602060a083028501011115613e1e578384fd5b6020928301989097509590910135949350505050565b600060208284031215613e45578081fd5b815167ffffffffffffffff811115613e5b578182fd5b613e67848285016139a7565b949350505050565b600060208284031215613e80578081fd5b8151612f5e81614ec4565b60008060008060008060c08789031215613ea3578384fd5b8635613eae81614ec4565b95506020870135613ebe81614eaf565b945060408701359350613ed48860608901613b55565b92506080870135915060a087013590509295509295509295565b600080600080600080600060c0888a031215613f08578485fd5b87359650613f198960208a01613a79565b95506040880135613f2981614eaf565b94506060880135613f3981614eaf565b9350608088013567ffffffffffffffff80821115613f55578283fd5b613f618b838c01613a97565b945060a08a0135915080821115613f76578283fd5b50613f838a828b01613906565b989b979a50959850939692959293505050565b600080600080600080600060e0888a031215613fb0578081fd5b87359650613fc18960208a01613a79565b95506040880135613fd181614eaf565b94506060880135613fe181614eaf565b9350608088013567ffffffffffffffff811115613ffc578182fd5b6140088a828b01613a97565b93505060a0880135915060c0880135905092959891949750929550565b600080600080600080600080610100898b031215614041578182fd5b883561404c81614eaf565b9750602089013561405c81614eaf565b96506040890135955060608901359450608089013561407a81614ec4565b93506140898a60a08b01613b55565b925060c0890135915060e089013590509295985092959890939650565b600080600080600080600060e0888a0312156140c0578081fd5b87356140cb81614eaf565b965060208801356140db81614eaf565b955060408801359450606088013593506140f88960808a01613b55565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215614126578182fd5b823561413181614eaf565b946020939093013593505050565b600080600080600060a08688031215614156578283fd5b853561416181614eaf565b9450602086013561417181614eaf565b9350604086013561418181614eaf565b94979396509394606081013594506080013592915050565b600080600080608085870312156141ae578182fd5b84356141b981614eaf565b935060208501356141c981614eaf565b925060408501356141d981614eaf565b9396929550929360600135925050565b60008060008060008060c08789031215614201578384fd5b863561420c81614eaf565b9550602087013561421c81614eaf565b9450604087013561422c81614eaf565b935060608701359250608087013561424381614ec4565b8092505060a087013590509295509295509295565b600060208284031215614269578081fd5b8151612f5e81614ed2565b60008060408385031215614286578182fd5b825161429181614ed2565b6020939093015192949293505050565b6000806000606084860312156142b5578081fd5b83516142c081614ed2565b602085015160409095015190969495509392505050565b6000806000606084860312156142eb578081fd5b83516142f681614ed2565b602085015190935067ffffffffffffffff811115614312578182fd5b61431e868287016139a7565b925050604084015190509250925092565b60008060008060008060008060008060006101608c8e031215614350578485fd5b61435a8d8d613a88565b9a5067ffffffffffffffff8060208e01351115614375578586fd5b6143858e60208f01358f01613845565b9a508060408e01351115614397578586fd5b6143a78e60408f01358f01613785565b909a5098506143b98e60608f01613b3e565b97508060e08e013511156143cb578586fd5b6143db8e60e08f01358f01613785565b90975095506101008d013594506101208d013593506101408d0135811015614401578283fd5b506144138d6101408e01358e01613906565b81935080925050509295989b509295989b9093969950565b6000806000806000806101208789031215614444578384fd5b863567ffffffffffffffff8082111561445b578586fd5b9088019060c0828b03121561446e578586fd5b61447860c0614e1b565b823581526144898b60208501613a88565b6020820152604083013561449c81614eaf565b60408201526144ae8b6060850161377a565b60608201526080830135608082015260a0830135828111156144ce578788fd5b6144da8c828601613a10565b60a0830152508098505050506144f38860208901613b3e565b959895975050505060a08401359360c08101359360e08201359350610100909101359150565b60006020828403121561452a578081fd5b5035919050565b600060208284031215614542578081fd5b5051919050565b6000806040838503121561455b578182fd5b505080516020909101519092909150565b6001600160a01b03169052565b60008284526020808501945082825b858110156145b657813561459b81614eaf565b6001600160a01b031687529582019590820190600101614588565b509495945050505050565b60008284526020808501945082825b858110156145b6578135875295820195908201906001016145d0565b6000815180845260208085019450808401835b838110156145b6578151875295820195908201906001016145ff565b15159052565b60008151808452614639816020860160208601614e6f565b601f01601f19169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b818110156146925783516001600160a01b03168352928401929184019160010161466d565b5050828501519150858103838701526146ab81836145ec565b92505050604083015184820360408601526146c68282614621565b91505060608301516146db606086018261461b565b509392505050565b80356146ee81614eaf565b6001600160a01b03908116835260208201359061470a82614ec4565b901515602084015260408201359061472182614eaf565b166040830152606081013561473581614ec4565b8015156060840152505050565b60008251614754818460208701614e6f565b9190910192915050565b60008451614770818460208901614e6f565b8201838582379092019182525092915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6000604082016001600160a01b03808616845260206040818601528286518085526060870191508288019450855b818110156148155785518516835294830194918301916001016147f7565b509098975050505050505050565b6001600160a01b039889168152969097166020870152604086019490945260608501929092521515608084015260ff1660a083015260c082015260e08101919091526101000190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0397881681529515156020870152939095166040850152606084019190915260ff16608083015260a082019290925260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b6001600160a01b03949094168452602084019290925261ffff1660408301521515606082015260800190565b6040808252810183905260008460608301825b8681101561499c576020833561498181614eaf565b6001600160a01b03168352928301929091019060010161496c565b5080925050506001600160a01b0383166020830152949350505050565b6020808252818101839052600090604080840186845b87811015614a5a5781356149e281614ed2565b6149eb81614e9b565b8352818501356149fa81614eaf565b6001600160a01b03168386015281840135848401526060614a1d81840184614e62565b614a298286018261456c565b50506080614a3981840184614e62565b614a458286018261456c565b505060a09283019291909101906001016149cf565b5090979650505050505050565b602080825282518282018190526000919060409081850190868401855b82811015614af05781518051614a9981614e9b565b8552808701516001600160a01b0316878601528581015186860152606080820151614ac68288018261456c565b505060809081015190614adb8682018361456c565b505060a0939093019290850190600101614a84565b5091979650505050505050565b60008582526001600160a01b03808616602084015280851660408401525060806060830152614b2f608083018461464d565b9695505050505050565b60408101614b4684614e9b565b9281526020015290565b60608101614b5d85614e9b565b938152602081019290925260409091015290565b6000614b7c85614e9b565b84825260606020830152614b9360608301856145ec565b9050826040830152949350505050565b6000610120808301614bb48c614ea5565b8b84526020808501929092528a5190819052610140808501928281028601909101918c8201855b82811015614c5b578785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00186528151805186528481015185870152604080820151908701526060808201519087015260809081015160a091870182905290614c4781880183614621565b978601979650505090830190600101614bdb565b505050508381036040850152614c72818a8c614579565b915050614c8260608401886146e3565b82810360e0840152614c958186886145c1565b915050826101008301529998505050505050505050565b60208082526010908201527f496e636f72726563742073656e64657200000000000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b60208082526019908201527f696e76616c696420636861696e6564207265666572656e636500000000000000604082015260600190565b600060e08252855160e08301526020860151614d6c81614ea5565b61010083015260408601516001600160a01b03908116610120840152606087015116610140830152608086015161016083015260a086015160c0610180840152614dba6101a0840182614621565b915050614dca60208301866146e3565b60a082019390935260c0015292915050565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526001600160a01b03918216602084015216604082015260600190565b60405181810167ffffffffffffffff81118282101715614e3a57600080fd5b604052919050565b600067ffffffffffffffff821115614e58578081fd5b5060209081020190565b60008235612f5e81614eaf565b60005b83811015614e8a578181015183820152602001614e72565b838111156104c65750506000910152565b600481106134b057fe5b600281106134b057fe5b6001600160a01b03811681146134b057600080fd5b80151581146134b057600080fd5b600481106134b057600080fdfea264697066735822122050b32f1916dd2bfb3a1d0a43f7959f7e0894f8a708f95ba38dda2a8251d8bb9564736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80DB15BD GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xB6D24737 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE8210E3C GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE8210E3C EQ PUSH2 0x3CB JUMPI DUP1 PUSH4 0xECC02637 EQ PUSH2 0x3DE JUMPI DUP1 PUSH4 0xEFE69108 EQ PUSH2 0x3F1 JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0x404 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0xB6D24737 EQ PUSH2 0x372 JUMPI DUP1 PUSH4 0xD293F290 EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0xD80952D5 EQ PUSH2 0x3A5 JUMPI DUP1 PUSH4 0xDB4C0E91 EQ PUSH2 0x3B8 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x324 JUMPI DUP1 PUSH4 0x8FE4624F EQ PUSH2 0x339 JUMPI DUP1 PUSH4 0x959FC17A EQ PUSH2 0x34C JUMPI DUP1 PUSH4 0xABF6D399 EQ PUSH2 0x35F JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x8C57198B EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x8D64CFBC EQ PUSH2 0x311 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0x6D307EA8 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x6D307EA8 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0x7AB6E03C EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0x7BC008F5 EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0x2C0 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x611B90DD EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0x65CA4804 EQ PUSH2 0x274 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x1C982441 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x1C982441 EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0x2CBEC84E EQ PUSH2 0x215 JUMPI DUP1 PUSH4 0x2E6272EA EQ PUSH2 0x228 JUMPI DUP1 PUSH4 0x3F85D390 EQ PUSH2 0x23B JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0xE248FEA EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x1089E5E3 EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0x18369446 EQ PUSH2 0x1EF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1DA PUSH2 0x1D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3CEE JUMP JUMPDEST PUSH2 0x431 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DA PUSH2 0x1EA CALLDATASIZE PUSH1 0x4 PUSH2 0x3C70 JUMP JUMPDEST PUSH2 0x4CC JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x1FD CALLDATASIZE PUSH1 0x4 PUSH2 0x432F JUMP JUMPDEST PUSH2 0x6B6 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x210 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B9E JUMP JUMPDEST PUSH2 0x8BF JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x223 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C70 JUMP JUMPDEST PUSH2 0xBBC JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x236 CALLDATASIZE PUSH1 0x4 PUSH2 0x442B JUMP JUMPDEST PUSH2 0xCF0 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x249 CALLDATASIZE PUSH1 0x4 PUSH2 0x3CA4 JUMP JUMPDEST PUSH2 0xE19 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x25C CALLDATASIZE PUSH1 0x4 PUSH2 0x41E9 JUMP JUMPDEST PUSH2 0xEE2 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x26F CALLDATASIZE PUSH1 0x4 PUSH2 0x413F JUMP JUMPDEST PUSH2 0x1191 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x282 CALLDATASIZE PUSH1 0x4 PUSH2 0x4199 JUMP JUMPDEST PUSH2 0x12AC JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x295 CALLDATASIZE PUSH1 0x4 PUSH2 0x413F JUMP JUMPDEST PUSH2 0x149F JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x2A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x41E9 JUMP JUMPDEST PUSH2 0x16C1 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x2BB CALLDATASIZE PUSH1 0x4 PUSH2 0x4199 JUMP JUMPDEST PUSH2 0x17C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D5 PUSH2 0x19B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x4791 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1DA PUSH2 0x2F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3BE3 JUMP JUMPDEST PUSH2 0x19D7 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x30C CALLDATASIZE PUSH1 0x4 PUSH2 0x3E8B JUMP JUMPDEST PUSH2 0x1ADB JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x31F CALLDATASIZE PUSH1 0x4 PUSH2 0x40A6 JUMP JUMPDEST PUSH2 0x1B86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D5 PUSH2 0x1C00 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x347 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F96 JUMP JUMPDEST PUSH2 0x1C24 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x35A CALLDATASIZE PUSH1 0x4 PUSH2 0x4025 JUMP JUMPDEST PUSH2 0x1E4E JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x36D CALLDATASIZE PUSH1 0x4 PUSH2 0x413F JUMP JUMPDEST PUSH2 0x1ECB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x38D CALLDATASIZE PUSH1 0x4 PUSH2 0x4114 JUMP JUMPDEST PUSH2 0x2081 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x413F JUMP JUMPDEST PUSH2 0x2127 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EEE JUMP JUMPDEST PUSH2 0x23AF JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B9E JUMP JUMPDEST PUSH2 0x293D JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x413F JUMP JUMPDEST PUSH2 0x2AED JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3EC CALLDATASIZE PUSH1 0x4 PUSH2 0x3DBE JUMP JUMPDEST PUSH2 0x2DB2 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3FF CALLDATASIZE PUSH1 0x4 PUSH2 0x413F JUMP JUMPDEST PUSH2 0x2EAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x424 PUSH2 0x41F CALLDATASIZE PUSH1 0x4 PUSH2 0x4519 JUMP JUMPDEST PUSH2 0x2F53 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x4DDC JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4C6 JUMPI DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0x449 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x45E SWAP2 SWAP1 PUSH2 0x3B66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x84E9BD7E CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x489 SWAP2 SWAP1 PUSH2 0x4791 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x435 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x4D5 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x4E6 JUMPI PUSH2 0x4E3 DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB0E3890000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xB0E38900 SWAP1 PUSH2 0x54E SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DDC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x57A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x59E SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH2 0x5D3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP5 PUSH2 0x2FDB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x69E JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x64A SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x678 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x69C SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP JUMPDEST PUSH2 0x6A7 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x4C6 JUMPI PUSH2 0x4C6 DUP3 DUP3 PUSH2 0x3055 JUMP JUMPDEST CALLER PUSH2 0x6C4 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x3B66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x6ED JUMPI POP ADDRESS PUSH2 0x6E2 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x3B66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x712 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0x777 JUMPI PUSH1 0x0 DUP12 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x72C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD SWAP1 POP PUSH2 0x743 DUP2 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x76E JUMPI PUSH2 0x751 DUP2 PUSH2 0x2FB0 JUMP JUMPDEST DUP13 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x75D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x715 JUMP JUMPDEST POP PUSH1 0x60 PUSH2 0x782 PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x945BCEC9 DUP6 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7BC SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BA3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x812 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3D2E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x8B0 JUMPI PUSH2 0x83D DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x82E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2F65 JUMP JUMPDEST PUSH2 0x859 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4D1A JUMP JUMPDEST PUSH2 0x8A8 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x868 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8A3 DUP5 DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x882 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x896 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3068 JUMP JUMPDEST PUSH2 0x3055 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x817 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8C8 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x8D9 JUMPI PUSH2 0x8D6 DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x93C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x911 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x93C DUP5 PUSH32 0x0 DUP5 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x9C3 SWAP1 PUSH32 0x0 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xA15 SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0xEA598CB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xEA598CB0 SWAP1 PUSH2 0xA7E SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DDC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAAC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xAD0 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0xB9D JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0xB49 SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB77 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xB9B SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP JUMPDEST PUSH2 0xBA6 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0xBB5 JUMPI PUSH2 0xBB5 DUP3 DUP3 PUSH2 0x3055 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xBC5 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0xBD6 JUMPI PUSH2 0xBD3 DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA1903EAB DUP5 ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC25 SWAP2 SWAP1 PUSH2 0x4791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC52 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP 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 0xC77 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x69E JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x64A SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST CALLER PUSH2 0xCFE PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x3B66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xD27 JUMPI POP ADDRESS PUSH2 0xD1C PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x3B66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xD43 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0xD50 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0xD68 JUMPI PUSH2 0xD62 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x2FB0 JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0xD72 PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52BBBE29 DUP5 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDA4 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDD1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP 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 0xDF6 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH2 0xE01 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0xE10 JUMPI PUSH2 0xE10 DUP3 DUP3 PUSH2 0x3055 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x3B9F738400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x3B9F7384 SWAP1 PUSH2 0xE85 SWAP1 DUP8 SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x4959 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEB3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xED7 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH2 0x6A7 DUP3 PUSH2 0x2F65 JUMP JUMPDEST PUSH2 0xEEB DUP4 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0xEFC JUMPI PUSH2 0xEF9 DUP4 PUSH2 0x2FB0 JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xF7B JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x51C0E061 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF52 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xF76 SWAP2 SWAP1 PUSH2 0x3B82 JUMP JUMPDEST PUSH2 0xFEE JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4800D97F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFCA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xFEE SWAP2 SWAP1 PUSH2 0x3B82 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ADDRESS EQ PUSH2 0x1033 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND CALLER EQ PUSH2 0x1028 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x1033 DUP7 DUP3 DUP7 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x107A SWAP1 DUP11 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1094 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x10CC SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x2F2CAB8700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x2F2CAB87 SWAP1 PUSH2 0x111B SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP7 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x492D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1149 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x116D SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH2 0x1178 DUP4 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x1187 JUMPI PUSH2 0x1187 DUP4 DUP3 PUSH2 0x3055 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x119A DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x11AB JUMPI PUSH2 0x11A8 DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x11EE JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x11E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x11EE DUP5 DUP7 DUP5 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEA785A5E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xEA785A5E SWAP1 PUSH2 0x1238 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1266 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x128A SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH2 0x1295 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x12A4 JUMPI PUSH2 0x12A4 DUP3 DUP3 PUSH2 0x3055 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x12B5 DUP2 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x12C6 JUMPI PUSH2 0x12C3 DUP2 PUSH2 0x2FB0 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ PUSH2 0x1309 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER EQ PUSH2 0x12FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x1309 DUP4 DUP6 DUP4 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x134E SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DDC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1368 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x137C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1403 SWAP2 SWAP1 PUSH2 0x3B82 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x144D SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1467 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x147B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x12A4 SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST PUSH2 0x14A8 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x14B9 JUMPI PUSH2 0x14B6 DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1508 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x152C SWAP2 SWAP1 PUSH2 0x3B82 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x1571 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x1566 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x1571 DUP6 DUP3 DUP6 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x15B8 SWAP1 DUP10 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x160A SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x1655 SWAP1 DUP8 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DE5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x166F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1683 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x16A7 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH2 0x16B2 DUP4 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0xE10 JUMPI PUSH2 0xE10 DUP4 DUP3 PUSH2 0x3055 JUMP JUMPDEST PUSH2 0x16CA DUP4 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x16DB JUMPI PUSH2 0x16D8 DUP4 PUSH2 0x2FB0 JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x171E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x1713 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x171E DUP6 DUP8 DUP6 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEAD5D35900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xEAD5D359 SWAP1 PUSH2 0x176A SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x490A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1783 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1797 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x17BB SWAP2 SWAP1 PUSH2 0x4549 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xE01 DUP3 PUSH2 0x2F65 JUMP JUMPDEST PUSH2 0x17D0 DUP2 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x17E1 JUMPI PUSH2 0x17DE DUP2 PUSH2 0x2FB0 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x181C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1830 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1854 SWAP2 SWAP1 PUSH2 0x3B82 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x1899 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x188E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x1899 DUP5 DUP3 DUP5 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x18E0 SWAP1 DUP9 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x190E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1932 SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x197A SWAP1 DUP6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DE5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ DUP1 PUSH2 0x19EC JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x1A08 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CE3 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A27 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x47A5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x1A96 SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x475E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x12A4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP3 PUSH2 0x311E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC654279400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xC6542794 SWAP1 PUSH2 0x1B4C SWAP1 ADDRESS SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x48AD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD505ACCF DUP8 PUSH2 0x1B9E PUSH2 0x1C00 JUMP JUMPDEST DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BC5 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x486C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x1C43 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x1C5F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C6A DUP9 PUSH2 0x3196 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1C77 DUP4 PUSH2 0x2F65 JUMP JUMPDEST PUSH2 0x1C82 JUMPI PUSH1 0x0 PUSH2 0x1D17 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1CC7 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CF3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1D17 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH2 0x1D27 DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x319C JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x1D34 PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB95CAC28 DUP6 DUP12 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1D66 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4AFD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D93 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x1DA1 DUP4 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x19A8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1DEE SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x4791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E1A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1E3E SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH2 0x1B7A DUP5 PUSH2 0x8A3 DUP4 DUP6 PUSH2 0x31CA JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8FCBAF0C DUP9 PUSH2 0x1E66 PUSH2 0x1C00 JUMP JUMPDEST DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E8F SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4823 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EBD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1ED4 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x1EE5 JUMPI PUSH2 0x1EE2 DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F34 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1F58 SWAP2 SWAP1 PUSH2 0x3B82 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x1F9D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x1F92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x1F9D DUP6 DUP3 DUP6 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x1FE4 SWAP1 DUP10 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2012 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2036 SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x2F4F21E200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x2F4F21E2 SWAP1 PUSH2 0x1655 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH2 0x208A DUP2 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x209B JUMPI PUSH2 0x2098 DUP2 PUSH2 0x2FB0 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95EA7B3 PUSH2 0x20B2 PUSH2 0x1C00 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x20D0 SWAP3 SWAP2 SWAP1 PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2122 SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x2130 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x2141 JUMPI PUSH2 0x213E DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x2184 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x2179 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x2184 DUP5 DUP7 DUP5 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x21F7 SWAP2 SWAP1 PUSH2 0x3B82 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x223F SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DDC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x226D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x22B9 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x22E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2309 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x2353 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x236D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2381 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x23A5 SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP PUSH2 0x16B2 DUP4 PUSH2 0x2F65 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x23CE JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x23EA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x242D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2473 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25E3 JUMPI PUSH2 0x2490 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x82E JUMPI INVALID JUMPDEST PUSH2 0x24AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4D1A JUMP JUMPDEST DUP6 MLOAD PUSH1 0x0 SWAP1 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x24BD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x24D1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP7 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x251F JUMPI PUSH2 0x24EE DUP2 PUSH2 0x31E0 JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x24FA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x25DA JUMP JUMPDEST PUSH2 0x2528 DUP2 PUSH2 0x31E3 JUMP JUMPDEST PUSH2 0x25B5 JUMPI PUSH2 0x2535 DUP2 PUSH2 0x31E0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2560 SWAP2 SWAP1 PUSH2 0x4791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2578 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x258C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x25B0 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST PUSH2 0x25C1 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x25CD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x2479 JUMP JUMPDEST POP DUP5 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x267A JUMPI PUSH2 0x25F6 PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP8 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2623 SWAP3 SWAP2 SWAP1 PUSH2 0x47C9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x263B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x264F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2677 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3E34 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x2688 DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x31F0 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x2695 PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8BDB3913 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x26C6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4AFD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26F4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x60 SWAP3 POP DUP6 SWAP2 POP POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2713 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x273D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP6 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x27DA JUMPI PUSH2 0x2752 PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP9 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x277F SWAP3 SWAP2 SWAP1 PUSH2 0x47C9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2797 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27AB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x27D3 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3E34 JUMP JUMPDEST SWAP1 POP PUSH2 0x28D8 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x28D6 JUMPI DUP7 MLOAD PUSH1 0x0 SWAP1 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x27F6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x280A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x281D DUP2 PUSH2 0x31E3 JUMP JUMPDEST PUSH2 0x28AA JUMPI PUSH2 0x282A DUP2 PUSH2 0x31E0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2855 SWAP2 SWAP1 PUSH2 0x4791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x286D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2881 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x28A5 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST PUSH2 0x28B6 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x28C2 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x27DD JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1BF3 JUMPI PUSH2 0x2935 DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x28F2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8A3 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x290B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x291F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x31CA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x28DB JUMP JUMPDEST PUSH2 0x2946 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x2957 JUMPI PUSH2 0x2954 DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x29BA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x298F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x29BA DUP5 PUSH32 0x0 DUP5 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDE0E9A3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xDE0E9A3E SWAP1 PUSH2 0x2A22 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DDC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A50 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2A74 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0xB9D JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0xB49 SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH2 0x2AF6 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x2B07 JUMPI PUSH2 0x2B04 DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B56 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2B7A SWAP2 SWAP1 PUSH2 0x3B82 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x2BBF JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x2BB4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x2BBF DUP6 DUP3 DUP6 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x2C06 SWAP1 DUP10 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C34 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2C58 SWAP2 SWAP1 PUSH2 0x3E6F JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0xB6B55F2500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xB6B55F25 SWAP1 PUSH2 0x2C9E SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DDC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CCC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x2D18 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4791 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D44 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2D68 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x2353 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x48F1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2E46 JUMPI CALLER DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x2DCA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xA0 MUL ADD PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2DE2 SWAP2 SWAP1 PUSH2 0x3B66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2E22 JUMPI POP ADDRESS DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x2DFF JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xA0 MUL ADD PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2E17 SWAP2 SWAP1 PUSH2 0x3B66 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x2E3E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2DB5 JUMP JUMPDEST POP PUSH2 0x2E4F PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2E7D SWAP3 SWAP2 SWAP1 PUSH2 0x49B9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1187 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2EB3 DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x2EC4 JUMPI PUSH2 0x2EC1 DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x2F07 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x2EFC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x709 SWAP1 PUSH2 0x4CAC JUMP JUMPDEST PUSH2 0x2F07 DUP5 DUP7 DUP5 PUSH2 0x3082 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBA08765200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xBA087652 SWAP1 PUSH2 0x1238 SWAP1 DUP7 SWAP1 DUP9 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4DFC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F5E DUP3 PUSH2 0x3217 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 DUP3 AND EQ JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2FBE DUP5 PUSH2 0x3217 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2FCB DUP5 PUSH2 0x322E JUMP JUMPDEST ISZERO PUSH2 0x2F5E JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2FEA DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x3275 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x3003 SWAP1 PUSH2 0x31E0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3040 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3045 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x2122 DUP2 PUSH2 0x1A4 PUSH2 0x3275 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3060 DUP4 PUSH2 0x3287 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SGT PUSH2 0x307A JUMPI DUP2 PUSH1 0x0 SUB PUSH2 0x307C JUMP JUMPDEST DUP2 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH2 0x308C JUMPI PUSH2 0x2122 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x30BC JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3107 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0xBB5 DUP6 DUP4 DUP4 PUSH2 0x32E5 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x313C SWAP2 SWAP1 PUSH2 0x4742 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3179 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x317E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x318D DUP3 DUP3 PUSH2 0x341F JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 DUP1 ISZERO PUSH2 0x31A9 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x31BF JUMPI PUSH2 0x31B8 DUP3 PUSH2 0x3449 JUMP JUMPDEST SWAP1 POP PUSH2 0x307C JUMP JUMPDEST PUSH2 0x307C PUSH2 0x136 PUSH2 0x3486 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31DA DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x3275 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 DUP1 ISZERO PUSH2 0x31FD JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x320C JUMPI PUSH2 0x31B8 DUP3 PUSH2 0x34B3 JUMP JUMPDEST PUSH2 0x307C PUSH2 0x150 PUSH2 0x3486 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3223 DUP4 PUSH2 0x3287 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x3283 JUMPI PUSH2 0x3283 DUP2 PUSH2 0x3486 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x3294 DUP4 PUSH2 0x34FC JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x32C6 SWAP3 SWAP2 SWAP1 PUSH2 0x4783 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x32FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3339 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x3326 PUSH2 0x374A JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x331E JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x33D1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3367 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3389 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x33BE JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x333F JUMP JUMPDEST POP PUSH2 0x33DA PUSH2 0x1C00 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3405 SWAP2 SWAP1 PUSH2 0x4A67 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x342E JUMPI POP DUP1 PUSH2 0x307C JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x343E JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x307C PUSH2 0x1AE PUSH2 0x3486 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x3456 DUP4 PUSH2 0x351F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3466 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x347D JUMPI PUSH2 0x3475 DUP4 PUSH2 0x3535 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2FAB JUMP JUMPDEST DUP3 SWAP2 POP POP PUSH2 0x2FAB JUMP JUMPDEST PUSH2 0x34B0 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x35E3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x34C0 DUP4 PUSH2 0x351F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x34D0 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x34DF JUMPI PUSH2 0x3475 DUP4 PUSH2 0x3644 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x34ED JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x347D JUMPI PUSH2 0x3475 DUP4 PUSH2 0x36A7 JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x307C SWAP2 SWAP1 PUSH2 0x4258 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x3543 DUP5 PUSH2 0x36FA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x35A9 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3562 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3575 DUP2 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x35A0 JUMPI PUSH2 0x3583 DUP2 PUSH2 0x2FB0 JUMP JUMPDEST DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x358F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 SWAP3 POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x354B JUMP JUMPDEST POP DUP1 PUSH2 0x35B5 JUMPI DUP5 PUSH2 0x318D JUMP JUMPDEST PUSH1 0x1 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x35CB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B71 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x3652 DUP5 PUSH2 0x371D JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x365F DUP3 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x369D JUMPI PUSH2 0x366D DUP3 PUSH2 0x2FB0 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3685 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B50 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x2FAB JUMP JUMPDEST DUP4 SWAP3 POP POP POP PUSH2 0x2FAB JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x36B4 DUP4 PUSH2 0x3734 JUMP JUMPDEST SWAP1 POP PUSH2 0x36BF DUP2 PUSH2 0x2F65 JUMP JUMPDEST ISZERO PUSH2 0x347D JUMPI PUSH2 0x36CD DUP2 PUSH2 0x2FB0 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x36E3 SWAP3 SWAP2 SWAP1 PUSH2 0x4B39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x2FAB JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3712 SWAP2 SWAP1 PUSH2 0x42D7 JUMP JUMPDEST SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3712 SWAP2 SWAP1 PUSH2 0x42A1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2F5E SWAP2 SWAP1 PUSH2 0x4274 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x307C DUP2 PUSH2 0x4EAF JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3796 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x37AD JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x37C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x37DE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x37F1 PUSH2 0x37EC DUP3 PUSH2 0x4E42 JUMP JUMPDEST PUSH2 0x4E1B JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x3812 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x383A JUMPI DUP2 CALLDATALOAD PUSH2 0x3828 DUP2 PUSH2 0x4EAF JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3815 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3855 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3863 PUSH2 0x37EC DUP3 PUSH2 0x4E42 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x383A JUMPI DUP2 CALLDATALOAD DUP8 ADD PUSH1 0xA0 DUP1 PUSH1 0x1F NOT DUP4 DUP13 SUB ADD SLT ISZERO PUSH2 0x3895 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x389E DUP2 PUSH2 0x4E1B JUMP JUMPDEST DUP6 DUP4 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 ADD CALLDATALOAD DUP8 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP6 ADD CALLDATALOAD DUP3 DUP5 ADD MSTORE PUSH1 0x80 SWAP2 POP DUP2 DUP6 ADD CALLDATALOAD DUP2 DUP5 ADD MSTORE POP DUP3 DUP5 ADD CALLDATALOAD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x38E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x38EE DUP13 DUP9 DUP6 DUP8 ADD ADD PUSH2 0x3A10 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP7 MSTORE POP POP SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3874 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3917 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x392E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0x40 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x37C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3959 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3967 PUSH2 0x37EC DUP3 PUSH2 0x4E42 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x3988 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x383A JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x398B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x39B7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x39C5 PUSH2 0x37EC DUP3 PUSH2 0x4E42 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x39E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x383A JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x39E9 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x307C DUP2 PUSH2 0x4EC4 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3A20 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3A36 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3A49 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x4E1B JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3A60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 DUP2 LT PUSH2 0x307C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x307C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3AA8 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x3AB2 PUSH1 0x80 PUSH2 0x4E1B JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3ACC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3AD8 DUP6 DUP4 DUP7 ADD PUSH2 0x37CE JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3AEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3AFA DUP6 DUP4 DUP7 ADD PUSH2 0x3949 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3B13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B20 DUP5 DUP3 DUP6 ADD PUSH2 0x3A10 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0x3B33 DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0x3A05 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3B4F JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x307C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3B77 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2F5E DUP2 PUSH2 0x4EAF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3B93 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2F5E DUP2 PUSH2 0x4EAF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3BB3 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3BBE DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3BCE DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3BF8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3C03 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3C13 DUP2 PUSH2 0x4EC4 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3C2F JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3C42 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3C50 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3C61 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3C84 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3C8F DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3CB8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3CCE JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3CDA DUP7 DUP3 DUP8 ADD PUSH2 0x3785 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP PUSH1 0x20 SWAP6 SWAP1 SWAP6 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D00 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3D16 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3D22 DUP6 DUP3 DUP7 ADD PUSH2 0x3785 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D40 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3D56 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x3D66 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x3D74 PUSH2 0x37EC DUP3 PUSH2 0x4E42 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x3D90 JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x3DB2 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x3D94 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3DD2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3DE9 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3DFC JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3E0A JUMPI DUP4 DUP5 REVERT JUMPDEST DUP8 PUSH1 0x20 PUSH1 0xA0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x3E1E JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP9 SWAP1 SWAP8 POP SWAP6 SWAP1 SWAP2 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3E45 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3E5B JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3E67 DUP5 DUP3 DUP6 ADD PUSH2 0x39A7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3E80 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2F5E DUP2 PUSH2 0x4EC4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3EA3 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3EAE DUP2 PUSH2 0x4EC4 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x3EBE DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x3ED4 DUP9 PUSH1 0x60 DUP10 ADD PUSH2 0x3B55 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3F08 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH2 0x3F19 DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0x3A79 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x3F29 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x3F39 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3F55 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3F61 DUP12 DUP4 DUP13 ADD PUSH2 0x3A97 JUMP JUMPDEST SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3F76 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3F83 DUP11 DUP3 DUP12 ADD PUSH2 0x3906 JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3FB0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH2 0x3FC1 DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0x3A79 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x3FD1 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x3FE1 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3FFC JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4008 DUP11 DUP3 DUP12 ADD PUSH2 0x3A97 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4041 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x404C DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x405C DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH2 0x407A DUP2 PUSH2 0x4EC4 JUMP JUMPDEST SWAP4 POP PUSH2 0x4089 DUP11 PUSH1 0xA0 DUP12 ADD PUSH2 0x3B55 JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x40C0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x40CB DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x40DB DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0x40F8 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0x3B55 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4126 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4131 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4156 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4161 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x4171 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x4181 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x41AE JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x41B9 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x41C9 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x41D9 DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4201 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x420C DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x421C DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x422C DUP2 PUSH2 0x4EAF JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x4243 DUP2 PUSH2 0x4EC4 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4269 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2F5E DUP2 PUSH2 0x4ED2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4286 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4291 DUP2 PUSH2 0x4ED2 JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x42B5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x42C0 DUP2 PUSH2 0x4ED2 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD SWAP1 SWAP7 SWAP5 SWAP6 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x42EB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x42F6 DUP2 PUSH2 0x4ED2 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4312 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x431E DUP7 DUP3 DUP8 ADD PUSH2 0x39A7 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x4350 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x435A DUP14 DUP14 PUSH2 0x3A88 JUMP JUMPDEST SWAP11 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 PUSH1 0x20 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x4375 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4385 DUP15 PUSH1 0x20 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x3845 JUMP JUMPDEST SWAP11 POP DUP1 PUSH1 0x40 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x4397 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x43A7 DUP15 PUSH1 0x40 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x3785 JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH2 0x43B9 DUP15 PUSH1 0x60 DUP16 ADD PUSH2 0x3B3E JUMP JUMPDEST SWAP8 POP DUP1 PUSH1 0xE0 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x43CB JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x43DB DUP15 PUSH1 0xE0 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x3785 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP5 POP PUSH2 0x120 DUP14 ADD CALLDATALOAD SWAP4 POP PUSH2 0x140 DUP14 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x4401 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x4413 DUP14 PUSH2 0x140 DUP15 ADD CALLDATALOAD DUP15 ADD PUSH2 0x3906 JUMP JUMPDEST DUP2 SWAP4 POP DUP1 SWAP3 POP POP POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4444 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x445B JUMPI DUP6 DUP7 REVERT JUMPDEST SWAP1 DUP9 ADD SWAP1 PUSH1 0xC0 DUP3 DUP12 SUB SLT ISZERO PUSH2 0x446E JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4478 PUSH1 0xC0 PUSH2 0x4E1B JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH2 0x4489 DUP12 PUSH1 0x20 DUP6 ADD PUSH2 0x3A88 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x449C DUP2 PUSH2 0x4EAF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x44AE DUP12 PUSH1 0x60 DUP6 ADD PUSH2 0x377A JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x44CE JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH2 0x44DA DUP13 DUP3 DUP7 ADD PUSH2 0x3A10 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP DUP1 SWAP9 POP POP POP POP PUSH2 0x44F3 DUP9 PUSH1 0x20 DUP10 ADD PUSH2 0x3B3E JUMP JUMPDEST SWAP6 SWAP9 SWAP6 SWAP8 POP POP POP POP PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP4 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP4 PUSH1 0xE0 DUP3 ADD CALLDATALOAD SWAP4 POP PUSH2 0x100 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x452A JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4542 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x455B JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x45B6 JUMPI DUP2 CALLDATALOAD PUSH2 0x459B DUP2 PUSH2 0x4EAF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4588 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x45B6 JUMPI DUP2 CALLDATALOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x45D0 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x45B6 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x45FF JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x4639 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4E6F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0xA0 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4692 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x466D JUMP JUMPDEST POP POP DUP3 DUP6 ADD MLOAD SWAP2 POP DUP6 DUP2 SUB DUP4 DUP8 ADD MSTORE PUSH2 0x46AB DUP2 DUP4 PUSH2 0x45EC JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x46C6 DUP3 DUP3 PUSH2 0x4621 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x46DB PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x461B JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x46EE DUP2 PUSH2 0x4EAF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x470A DUP3 PUSH2 0x4EC4 JUMP JUMPDEST SWAP1 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x4721 DUP3 PUSH2 0x4EAF JUMP JUMPDEST AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD CALLDATALOAD PUSH2 0x4735 DUP2 PUSH2 0x4EC4 JUMP JUMPDEST DUP1 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4754 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x4E6F JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x4770 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x4E6F JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND DUP5 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP7 ADD MSTORE DUP3 DUP7 MLOAD DUP1 DUP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP2 POP DUP3 DUP9 ADD SWAP5 POP DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4815 JUMPI DUP6 MLOAD DUP6 AND DUP4 MSTORE SWAP5 DUP4 ADD SWAP5 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x47F7 JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE SWAP7 SWAP1 SWAP8 AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE ISZERO ISZERO PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 ISZERO ISZERO PUSH1 0x20 DUP8 ADD MSTORE SWAP4 SWAP1 SWAP6 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 DUP5 PUSH1 0x60 DUP4 ADD DUP3 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x499C JUMPI PUSH1 0x20 DUP4 CALLDATALOAD PUSH2 0x4981 DUP2 PUSH2 0x4EAF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x496C JUMP JUMPDEST POP DUP1 SWAP3 POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x40 DUP1 DUP5 ADD DUP7 DUP5 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x4A5A JUMPI DUP2 CALLDATALOAD PUSH2 0x49E2 DUP2 PUSH2 0x4ED2 JUMP JUMPDEST PUSH2 0x49EB DUP2 PUSH2 0x4E9B JUMP JUMPDEST DUP4 MSTORE DUP2 DUP6 ADD CALLDATALOAD PUSH2 0x49FA DUP2 PUSH2 0x4EAF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP7 ADD MSTORE DUP2 DUP5 ADD CALLDATALOAD DUP5 DUP5 ADD MSTORE PUSH1 0x60 PUSH2 0x4A1D DUP2 DUP5 ADD DUP5 PUSH2 0x4E62 JUMP JUMPDEST PUSH2 0x4A29 DUP3 DUP7 ADD DUP3 PUSH2 0x456C JUMP JUMPDEST POP POP PUSH1 0x80 PUSH2 0x4A39 DUP2 DUP5 ADD DUP5 PUSH2 0x4E62 JUMP JUMPDEST PUSH2 0x4A45 DUP3 DUP7 ADD DUP3 PUSH2 0x456C JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x49CF JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4AF0 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH2 0x4A99 DUP2 PUSH2 0x4E9B JUMP JUMPDEST DUP6 MSTORE DUP1 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP7 ADD MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP7 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD PUSH2 0x4AC6 DUP3 DUP9 ADD DUP3 PUSH2 0x456C JUMP JUMPDEST POP POP PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 PUSH2 0x4ADB DUP7 DUP3 ADD DUP4 PUSH2 0x456C JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP4 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4A84 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x4B2F PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x464D JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4B46 DUP5 PUSH2 0x4E9B JUMP JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4B5D DUP6 PUSH2 0x4E9B JUMP JUMPDEST SWAP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B7C DUP6 PUSH2 0x4E9B JUMP JUMPDEST DUP5 DUP3 MSTORE PUSH1 0x60 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4B93 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x45EC JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP1 DUP4 ADD PUSH2 0x4BB4 DUP13 PUSH2 0x4EA5 JUMP JUMPDEST DUP12 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD SWAP1 DUP2 SWAP1 MSTORE PUSH2 0x140 DUP1 DUP6 ADD SWAP3 DUP3 DUP2 MUL DUP7 ADD SWAP1 SWAP2 ADD SWAP2 DUP13 DUP3 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4C5B JUMPI DUP8 DUP6 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC0 ADD DUP7 MSTORE DUP2 MLOAD DUP1 MLOAD DUP7 MSTORE DUP5 DUP2 ADD MLOAD DUP6 DUP8 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD PUSH1 0xA0 SWAP2 DUP8 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x4C47 DUP2 DUP9 ADD DUP4 PUSH2 0x4621 JUMP JUMPDEST SWAP8 DUP7 ADD SWAP8 SWAP7 POP POP POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4BDB JUMP JUMPDEST POP POP POP POP DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x4C72 DUP2 DUP11 DUP13 PUSH2 0x4579 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4C82 PUSH1 0x60 DUP5 ADD DUP9 PUSH2 0x46E3 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x4C95 DUP2 DUP7 DUP9 PUSH2 0x45C1 JUMP JUMPDEST SWAP2 POP POP DUP3 PUSH2 0x100 DUP4 ADD MSTORE SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742073656E64657200000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x696E76616C696420636861696E6564207265666572656E636500000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 MSTORE DUP6 MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x4D6C DUP2 PUSH2 0x4EA5 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x60 DUP8 ADD MLOAD AND PUSH2 0x140 DUP4 ADD MSTORE PUSH1 0x80 DUP7 ADD MLOAD PUSH2 0x160 DUP4 ADD MSTORE PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 PUSH2 0x180 DUP5 ADD MSTORE PUSH2 0x4DBA PUSH2 0x1A0 DUP5 ADD DUP3 PUSH2 0x4621 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4DCA PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x46E3 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4E3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4E58 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x2F5E DUP2 PUSH2 0x4EAF JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4E8A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4E72 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x4C6 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x34B0 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x34B0 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x34B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x34B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x34B0 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP 0xB3 0x2F NOT AND 0xDD 0x2B 0xFB GASPRICE SAR EXP NUMBER 0xF7 SWAP6 SWAP16 PUSH31 0x894F8A708F95BA38DDA2A8251D8BB9564736F6C6343000701003300000000 ","sourceMap":"1310:442:64:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4183:241:71;;;;;;:::i;:::-;;:::i;:::-;;4322:1140:73;;;;;;:::i;:::-;;:::i;2424:1525:76:-;;;;;;:::i;:::-;;:::i;1851:934:73:-;;;;;;:::i;:::-;;:::i;3774:542::-;;;;;;:::i;:::-;;:::i;1715:703:76:-;;;;;;:::i;:::-;;:::i;3575:302:71:-;;;;;;:::i;:::-;;:::i;1329:1260:67:-;;;;;;:::i;:::-;;:::i;3329:873:75:-;;;;;;:::i;:::-;;:::i;2472:1097:71:-;;;;;;:::i;:::-;;:::i;1298:951:70:-;;;;;;:::i;:::-;;:::i;2595:1004:67:-;;;;;;:::i;:::-;;:::i;1630:836:71:-;;;;;;:::i;:::-;;:::i;2220:99:69:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2433:466;;;;;;:::i;:::-;;:::i;3883:294:71:-;;;;;;:::i;:::-;;:::i;1328:280:77:-;;;;;;:::i;:::-;;:::i;2126:88:69:-;;;;;;;;;;;;;:::i;4320:1496:76:-;;;;;;:::i;:::-;;:::i;1614:315:77:-;;;;;;:::i;:::-;;:::i;2030:1001:75:-;;;;;;:::i;:::-;;:::i;3077:273:69:-;;;;;;;;;;-1:-1:-1;3077:273:69;;;;;:::i;:::-;;:::i;1278:1221:74:-;;;;;;:::i;:::-;;:::i;7560:2544:76:-;;;;;;:::i;:::-;;:::i;2791:977:73:-;;;;;;:::i;:::-;;:::i;2505:1310:74:-;;;;;;:::i;:::-;;:::i;3955:327:76:-;;;;;;:::i;:::-;;:::i;2255:853:70:-;;;;;;:::i;:::-;;:::i;3525:153:69:-;;;;;;;;;;-1:-1:-1;3525:153:69;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4183:241:71:-;4299:6;4279:17;4322:96;4342:9;4338:1;:13;4322:96;;;4372:6;;4379:1;4372:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4372:23:71;;4396:10;4372:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4353:3;;;;;4322:96;;;;4183:241;;;:::o;4322:1140:73:-;4468:27;4488:6;4468:19;:27::i;:::-;4464:100;;;4520:33;4546:6;4520:25;:33::i;:::-;4511:42;;4464:100;4701:32;;;;;4684:14;;-1:-1:-1;;;;;4701:7:73;:24;;;;:32;;4726:6;;4701:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4684:49;-1:-1:-1;5183:43:73;-1:-1:-1;;;;;5199:7:73;5183:35;5219:6;5183:35;:43::i;:::-;-1:-1:-1;;;;;5241:26:73;;5262:4;5241:26;5237:92;;5283:35;;;;;-1:-1:-1;;;;;5283:7:73;:16;;;;:35;;5300:9;;5311:6;;5283:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5237:92;5343:36;5363:15;5343:19;:36::i;:::-;5339:117;;;5395:50;5421:15;5438:6;5395:25;:50::i;2424:1525:76:-;2791:10;2775:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;2775:26:76;;:59;;;-1:-1:-1;2829:4:76;2805:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;2805:29:76;;2775:59;2767:88;;;;-1:-1:-1;;;2767:88:76;;;;;;;:::i;:::-;;;;;;;;;2871:9;2866:230;2890:5;:12;2886:1;:16;2866:230;;;2923:14;2940:5;2946:1;2940:8;;;;;;;;;;;;;;:15;;;2923:32;;2973:27;2993:6;2973:19;:27::i;:::-;2969:117;;;3038:33;3064:6;3038:25;:33::i;:::-;3020:5;3026:1;3020:8;;;;;;;;;;;;;;:15;;:51;;;;;2969:117;-1:-1:-1;2904:3:76;;2866:230;;;;3106:23;3132:10;:8;:10::i;:::-;-1:-1:-1;;;;;3132:20:76;;3161:5;3169:4;3175:5;3182:6;;3190:5;3197:6;;3205:8;3132:82;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3132:82:76;;;;;;;;;;;;:::i;:::-;3106:108;;3230:9;3225:718;3245:27;;;3225:718;;;3301:44;3321:16;;3338:1;3321:19;;;;;;;;;;;;:23;;;3301:19;:44::i;:::-;3293:82;;;;-1:-1:-1;;;3293:82:76;;;;;;;:::i;:::-;3836:96;3862:16;;3879:1;3862:19;;;;;;;;;;;;:23;;;3887:44;3896:7;3904:16;;3921:1;3904:19;;;;;;;;;;;;:25;;;3896:34;;;;;;;;;;;;;;3887:8;:44::i;:::-;3836:25;:96::i;:::-;3274:3;;3225:718;;;;2424:1525;;;;;;;;;;;;:::o;1851:934:73:-;2015:27;2035:6;2015:19;:27::i;:::-;2011:100;;;2067:33;2093:6;2067:25;:33::i;:::-;2058:42;;2011:100;-1:-1:-1;;;;;2296:23:73;;2314:4;2296:23;2292:151;;-1:-1:-1;;;;;2343:20:73;;2353:10;2343:20;2335:49;;;;-1:-1:-1;;;2335:49:73;;;;;;;:::i;:::-;2398:34;2409:6;2417;2425;2398:10;:34::i;:::-;2453:40;;;;;-1:-1:-1;;;;;2453:6:73;:14;;;;:40;;2476:7;;2486:6;;2453:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2520:29:73;;;;;2503:14;;-1:-1:-1;;;;;2528:7:73;2520:21;;;;:29;;2542:6;;2520:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2503:46;-1:-1:-1;;;;;;2564:26:73;;2585:4;2564:26;2560:92;;2606:35;;;;;-1:-1:-1;;;;;2606:7:73;:16;;;;:35;;2623:9;;2634:6;;2606:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2560:92;2666:36;2686:15;2666:19;:36::i;:::-;2662:117;;;2718:50;2744:15;2761:6;2718:25;:50::i;:::-;1851:934;;;;;:::o;3774:542::-;3913:27;3933:6;3913:19;:27::i;:::-;3909:100;;;3965:33;3991:6;3965:25;:33::i;:::-;3956:42;;3909:100;4019:14;4036:6;-1:-1:-1;;;;;4036:13:73;;4058:6;4075:4;4036:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4019:62;-1:-1:-1;;;;;;4096:26:73;;4117:4;4096:26;4092:91;;4138:34;;;;;-1:-1:-1;;;;;4138:6:73;:15;;;;:34;;4154:9;;4165:6;;4138:34;;;:::i;1715:703:76:-;1982:10;1966:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;1966:26:76;;:59;;;-1:-1:-1;2020:4:76;1996:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;1996:29:76;;1966:59;1958:88;;;;-1:-1:-1;;;1958:88:76;;;;;;;:::i;:::-;2061:38;2081:10;:17;;;2061:19;:38::i;:::-;2057:133;;;2135:44;2161:10;:17;;;2135:25;:44::i;:::-;2115:17;;;:64;2057:133;2200:14;2217:10;:8;:10::i;:::-;-1:-1:-1;;;;;2217:15:76;;2241:5;2249:10;2261:5;2268;2275:8;2217:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2200:84;;2299:36;2319:15;2299:19;:36::i;:::-;2295:117;;;2351:50;2377:15;2394:6;2351:25;:50::i;:::-;1715:703;;;;;;;:::o;3575:302:71:-;3693:47;;;;;3673:17;;-1:-1:-1;;;;;3693:15:71;:27;;;;:47;;3721:6;;;;3729:10;;3693:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3673:67;;3755:36;3775:15;3755:19;:36::i;1329:1260:67:-;1570:27;1590:6;1570:19;:27::i;:::-;1566:100;;;1622:33;1648:6;1622:25;:33::i;:::-;1613:42;;1566:100;1848:19;1870:14;:59;;1909:11;-1:-1:-1;;;;;1909:18:67;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1870:59;;;1887:11;-1:-1:-1;;;;;1887:17:67;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1848:81;-1:-1:-1;;;;;;2119:23:67;;2137:4;2119:23;2115:157;;-1:-1:-1;;;;;2166:20:67;;2176:10;2166:20;2158:49;;;;-1:-1:-1;;;2158:49:67;;;;;;;:::i;:::-;2221:40;2232:6;2240:12;2254:6;2221:10;:40::i;:::-;2282:50;;;;;-1:-1:-1;;;;;2282:20:67;;;;;:50;;2311:11;;2325:6;;2282:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2398:57:67;;;;;2381:14;;-1:-1:-1;;;;;2398:19:67;;;;;:57;;2418:9;;2429:6;;2381:14;;2440;;2398:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2381:74;;2470:36;2490:15;2470:19;:36::i;:::-;2466:117;;;2522:50;2548:15;2565:6;2522:25;:50::i;:::-;1329:1260;;;;;;;;:::o;3329:873:75:-;3540:27;3560:6;3540:19;:27::i;:::-;3536:100;;;3592:33;3618:6;3592:25;:33::i;:::-;3583:42;;3536:100;-1:-1:-1;;;;;3830:23:75;;3848:4;3830:23;3826:157;;-1:-1:-1;;;;;3877:20:75;;3887:10;3877:20;3869:49;;;;-1:-1:-1;;;3869:49:75;;;;;;;:::i;:::-;3932:40;3943:6;3951:12;3965:6;3932:10;:40::i;:::-;4020:38;;;;;3993:24;;-1:-1:-1;;;;;4020:19:75;;;;;:38;;4040:9;;4051:6;;4020:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3993:65;;4073:36;4093:15;4073:19;:36::i;:::-;4069:127;;;4125:60;4151:15;4168:16;4125:25;:60::i;:::-;3329:873;;;;;;:::o;2472:1097:71:-;2645:27;2665:6;2645:19;:27::i;:::-;2641:100;;;2697:33;2723:6;2697:25;:33::i;:::-;2688:42;;2641:100;-1:-1:-1;;;;;2932:23:71;;2950:4;2932:23;2928:158;;-1:-1:-1;;;;;2979:20:71;;2989:10;2979:20;2971:49;;;;-1:-1:-1;;;2971:49:71;;;;;;;:::i;:::-;3034:41;3045:6;3060:5;3068:6;3034:10;:41::i;:::-;3203:22;;;;;-1:-1:-1;;;;;3203:14:71;;;;;:22;;3218:6;;3203:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;3425:26:71;;3446:4;3425:26;3421:142;;3467:15;3485:5;-1:-1:-1;;;;;3485:14:71;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3516:36;;;;;3467:34;;-1:-1:-1;;;;;;3516:17:71;;;;;:36;;3534:9;;3545:6;;3516:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1298:951:70:-;1495:27;1515:6;1495:19;:27::i;:::-;1491:100;;;1547:33;1573:6;1547:25;:33::i;:::-;1538:42;;1491:100;1601:17;1628:12;-1:-1:-1;;;;;1628:18:70;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1601:48;-1:-1:-1;;;;;;1839:23:70;;1857:4;1839:23;1835:155;;-1:-1:-1;;;;;1886:20:70;;1896:10;1886:20;1878:49;;;;-1:-1:-1;;;1878:49:70;;;;;;;:::i;:::-;1941:38;1952:6;1960:10;1972:6;1941:10;:38::i;:::-;2000:49;;;;;-1:-1:-1;;;;;2000:18:70;;;;;:49;;2027:12;;2042:6;;2000:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2076:39:70;;;;;2059:14;;-1:-1:-1;;;;;2076:20:70;;;;;:39;;2097:6;;2105:9;;2076:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2059:56;;2130:36;2150:15;2130:19;:36::i;:::-;2126:117;;;2182:50;2208:15;2225:6;2182:25;:50::i;2595:1004:67:-;2835:27;2855:6;2835:19;:27::i;:::-;2831:100;;;2887:33;2913:6;2887:25;:33::i;:::-;2878:42;;2831:100;-1:-1:-1;;;;;3122:23:67;;3140:4;3122:23;3118:156;;-1:-1:-1;;;;;3169:20:67;;3179:10;3169:20;3161:49;;;;-1:-1:-1;;;3161:49:67;;;;;;;:::i;:::-;3224:39;3235:6;3243:11;3256:6;3224:10;:39::i;:::-;3412:53;;;;;3394:14;;-1:-1:-1;;;;;3412:20:67;;;;;:53;;3433:9;;3444:6;;3452:12;;3412:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3391:74;;;3480:36;3500:15;3480:19;:36::i;1630:836:71:-;1802:27;1822:6;1802:19;:27::i;:::-;1798:100;;;1854:33;1880:6;1854:25;:33::i;:::-;1845:42;;1798:100;1991:15;2009:5;-1:-1:-1;;;;;2009:14:71;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1991:34;-1:-1:-1;;;;;;2218:23:71;;2236:4;2218:23;2214:153;;-1:-1:-1;;;;;2265:20:71;;2275:10;2265:20;2257:49;;;;-1:-1:-1;;;2257:49:71;;;;;;;:::i;:::-;2320:36;2331:6;2339:8;2349:6;2320:10;:36::i;:::-;2377:40;;;;;-1:-1:-1;;;;;2377:16:71;;;;;:40;;2402:5;;2410:6;;2377:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2427:32:71;;;;;-1:-1:-1;;;;;2427:13:71;;;;;:32;;2441:6;;2449:9;;2427:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1630:836;;;;;:::o;2220:99:69:-;2301:11;2220:99;:::o;2433:466::-;-1:-1:-1;;;;;2588:24:69;;2607:4;2588:24;;:37;;;2617:8;2616:9;2588:37;2580:81;;;;-1:-1:-1;;;2580:81:69;;;;;;;:::i;:::-;2671:17;2744:34;;;2780:10;2792:7;2801:8;2721:89;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2721:89:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;2691:156;;;2824:13;;;;2691:156;;:::i;:::-;;;;-1:-1:-1;;2691:156:69;;;;;;;;;;-1:-1:-1;2858:34:69;-1:-1:-1;;;;;2866:6:69;2858:28;2691:156;2858:28;:34::i;3883:294:71:-;4074:96;;;;;-1:-1:-1;;;;;4074:15:71;:46;;;;:96;;4129:4;;4136:8;;4146:4;;4152:8;;4162:1;;4165;;4168;;4074:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3883:294;;;;;;:::o;1328:280:77:-;1535:5;-1:-1:-1;;;;;1535:12:77;;1548:5;1563:10;:8;:10::i;:::-;1576:5;1583:8;1593:1;1596;1599;1535:66;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1328:280;;;;;;;:::o;2126:88:69:-;2201:6;2126:88;:::o;4320:1496:76:-;-1:-1:-1;;;;;4580:20:76;;4590:10;4580:20;;:47;;-1:-1:-1;;;;;;4604:23:76;;4622:4;4604:23;4580:47;4572:76;;;;-1:-1:-1;;;4572:76:76;;;;;;;:::i;:::-;4969:10;4989:34;5016:6;4989:26;:34::i;:::-;4969:55;;5034:32;5069:36;5089:15;5069:19;:36::i;:::-;:67;;5135:1;5069:67;;;5108:24;;;;;-1:-1:-1;;;;;5108:13:76;;;;;:24;;5122:9;;5108:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5034:102;;5166:63;5206:4;5212:7;:16;;;5166:39;:63::i;:::-;5147:16;;;:82;5240:10;:8;:10::i;:::-;-1:-1:-1;;;;;5240:19:76;;5268:5;5276:6;5284;5292:9;5303:7;5240:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5326:36;5346:15;5326:19;:36::i;:::-;5322:488;;;5670:24;;;;;5642:25;;-1:-1:-1;;;;;5670:13:76;;;;;:24;;5684:9;;5670:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5642:52;-1:-1:-1;5708:91:76;5734:15;5751:47;5642:52;5773:24;5751:21;:47::i;1614:315:77:-;1848:5;-1:-1:-1;;;;;1848:12:77;;1861:6;1877:10;:8;:10::i;:::-;1890:5;1897:6;1905:7;1914:1;1917;1920;1848:74;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1614:315;;;;;;;;:::o;2030:1001:75:-;2240:28;2260:7;2240:19;:28::i;:::-;2236:103;;;2294:34;2320:7;2294:25;:34::i;:::-;2284:44;;2236:103;2349:22;2381:12;-1:-1:-1;;;;;2381:23:75;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2349:58;-1:-1:-1;;;;;;2597:23:75;;2615:4;2597:23;2593:161;;-1:-1:-1;;;;;2644:20:75;;2654:10;2644:20;2636:49;;;;-1:-1:-1;;;2636:49:75;;;;;;;:::i;:::-;2699:44;2710:6;2718:15;2735:7;2699:10;:44::i;:::-;2764:55;;;;;-1:-1:-1;;;;;2764:23:75;;;;;:55;;2796:12;;2811:7;;2764:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2850:43:75;;;;;2829:18;;-1:-1:-1;;;;;2850:23:75;;;;;:43;;2874:9;;2885:7;;2850:43;;;:::i;3077:273:69:-;3159:27;3179:6;3159:19;:27::i;:::-;3155:100;;;3211:33;3237:6;3211:25;:33::i;:::-;3202:42;;3155:100;3301:5;-1:-1:-1;;;;;3301:13:69;;3323:10;:8;:10::i;:::-;3336:6;3301:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3077:273;;:::o;1278:1221:74:-;1493:27;1513:6;1493:19;:27::i;:::-;1489:100;;;1545:33;1571:6;1545:25;:33::i;:::-;1536:42;;1489:100;-1:-1:-1;;;;;1780:23:74;;1798:4;1780:23;1776:155;;-1:-1:-1;;;;;1827:20:74;;1837:10;1827:20;1819:49;;;;-1:-1:-1;;;1819:49:74;;;;;;;:::i;:::-;1882:38;1893:6;1901:10;1913:6;1882:10;:38::i;:::-;1941:22;1973:10;-1:-1:-1;;;;;1973:16:74;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2067:27;;;;;1941:51;;-1:-1:-1;;;;;;2067:19:74;;;;;:27;;2087:6;;2067:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2209:40:74;;;;;2183:23;;-1:-1:-1;;;;;;2209:25:74;;;-1:-1:-1;2209:25:74;;:40;;2243:4;;2209:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2304:52;;;;;2183:66;;-1:-1:-1;;;;;;2304:24:74;;;;;:52;;2329:9;;2183:66;;2304:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2371:36;2391:15;2371:19;:36::i;7560:2544:76:-;-1:-1:-1;;;;;7825:20:76;;7835:10;7825:20;;:47;;-1:-1:-1;;;;;;7849:23:76;;7867:4;7849:23;7825:47;7817:76;;;;-1:-1:-1;;;7817:76:76;;;;;;;:::i;:::-;8071:29;8116:16;8103:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8103:37:76;-1:-1:-1;8071:69:76;-1:-1:-1;8239:41:76;8297:16;8283:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8283:38:76;;8239:82;;8336:9;8331:486;8351:27;;;8331:486;;;8407:44;8427:16;;8444:1;8427:19;;;;;;8407:44;8399:82;;;;-1:-1:-1;;;8399:82:76;;;;;;;:::i;:::-;8511:14;;8496:12;;8526:16;;8543:1;8526:19;;;;;;;;;;;;:25;;;8511:41;;;;;;;;;;;;;;8496:56;;8570:7;:25;;;8566:241;;;8634:16;8644:5;8634:9;:16::i;:::-;8615:13;8629:1;8615:16;;;;;;;;;;;;;:35;-1:-1:-1;;;;;8615:35:76;;;-1:-1:-1;;;;;8615:35:76;;;;;8566:241;;;8719:13;8726:5;8719:6;:13::i;:::-;:73;;8755:16;8765:5;8755:9;:16::i;:::-;-1:-1:-1;;;;;8755:26:76;;8782:9;8755:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8719:73;;;8735:9;-1:-1:-1;;;;;8735:17:76;;8719:73;8689:24;8714:1;8689:27;;;;;;;;;;;;;:103;;;;;8566:241;-1:-1:-1;8380:3:76;;8331:486;;;;8830:7;:25;;;8826:138;;;8898:10;:8;:10::i;:::-;-1:-1:-1;;;;;8898:29:76;;8928:9;8939:13;8898:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8898:55:76;;;;;;;;;;;;:::i;:::-;8871:82;;8826:138;9018:63;9058:4;9064:7;:16;;;9018:39;:63::i;:::-;8999:16;;;:82;9091:10;:8;:10::i;:::-;-1:-1:-1;;;;;9091:19:76;;9111:6;9119;9127:9;9138:7;9091:55;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9216:44:76;;-1:-1:-1;9277:16:76;;-1:-1:-1;;9263:38:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9263:38:76;;9216:85;;9315:7;:25;;;9311:478;;;9386:10;:8;:10::i;:::-;-1:-1:-1;;;;;9386:29:76;;9416:9;9427:13;9386:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9386:55:76;;;;;;;;;;;;:::i;:::-;9356:85;;9311:478;;;9477:9;9472:307;9492:27;;;9472:307;;;9559:14;;9544:12;;9574:16;;9591:1;9574:19;;;;;;;;;;;;:25;;;9559:41;;;;;;;;;;;;;;9544:56;;9651:13;9658:5;9651:6;:13::i;:::-;:113;;9727:16;9737:5;9727:9;:16::i;:::-;-1:-1:-1;;;;;9727:26:76;;9754:9;9727:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9651:113;;;9687:9;-1:-1:-1;;;;;9687:17:76;;9651:113;9618:27;9646:1;9618:30;;;;;;;;;;;;;;;;;:146;-1:-1:-1;9521:3:76;;9472:307;;;;9311:478;9863:9;9858:240;9878:27;;;9858:240;;;9926:161;9969:16;;9986:1;9969:19;;;;;;;;;;;;:23;;;10010:63;10045:24;10070:1;10045:27;;;;;;;;;;;;;;10010;10038:1;10010:30;;;;;;;;;;;;;;:34;;:63;;;;:::i;9926:161::-;9907:3;;9858:240;;2791:977:73;2958:27;2978:6;2958:19;:27::i;:::-;2954:100;;;3010:33;3036:6;3010:25;:33::i;:::-;3001:42;;2954:100;-1:-1:-1;;;;;3241:23:73;;3259:4;3241:23;3237:152;;-1:-1:-1;;;;;3288:20:73;;3298:10;3288:20;3280:49;;;;-1:-1:-1;;;3280:49:73;;;;;;;:::i;:::-;3343:35;3354:6;3362:7;3371:6;3343:10;:35::i;:::-;3511:22;;;;;3494:14;;-1:-1:-1;;;;;3511:7:73;:14;;;;:22;;3526:6;;3511:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3494:39;-1:-1:-1;;;;;;3548:26:73;;3569:4;3548:26;3544:91;;3590:34;;;;;-1:-1:-1;;;;;3590:6:73;:15;;;;:34;;3606:9;;3617:6;;3590:34;;;:::i;2505:1310:74:-;2718:27;2738:6;2718:19;:27::i;:::-;2714:100;;;2770:33;2796:6;2770:25;:33::i;:::-;2761:42;;2714:100;2824:22;2856:10;-1:-1:-1;;;;;2856:16:74;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2824:51;-1:-1:-1;;;;;;3065:23:74;;3083:4;3065:23;3061:160;;-1:-1:-1;;;;;3112:20:74;;3122:10;3112:20;3104:49;;;;-1:-1:-1;;;3104:49:74;;;;;;;:::i;:::-;3167:43;3178:6;3186:15;3203:6;3167:10;:43::i;:::-;3308:52;;;;;-1:-1:-1;;;;;3308:23:74;;;;;:52;;3340:10;;3353:6;;3308:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3416:26:74;;;;;-1:-1:-1;;;;;3416:18:74;;;;;:26;;3435:6;;3416:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3541:35:74;;;;;3518:20;;-1:-1:-1;;;;;;3541:20:74;;;-1:-1:-1;3541:20:74;;:35;;3570:4;;3541:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3631:44;;;;;3518:58;;-1:-1:-1;;;;;;3631:19:74;;;;;:44;;3651:9;;3518:58;;3631:44;;;:::i;3955:327:76:-;4066:9;4061:156;4081:14;;;4061:156;;;4141:10;4124:3;;4128:1;4124:6;;;;;;;;;;;;:13;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4124:27:76;;:61;;;-1:-1:-1;4180:4:76;4155:3;;4159:1;4155:6;;;;;;;;;;;;:13;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4155:30:76;;4124:61;4116:90;;;;-1:-1:-1;;;4116:90:76;;;;;;;:::i;:::-;4097:3;;4061:156;;;;4226:10;:8;:10::i;:::-;-1:-1:-1;;;;;4226:28:76;;4263:5;4271:3;;4226:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2255:853:70;2454:27;2474:6;2454:19;:27::i;:::-;2450:100;;;2506:33;2532:6;2506:25;:33::i;:::-;2497:42;;2450:100;-1:-1:-1;;;;;2741:23:70;;2759:4;2741:23;2737:157;;-1:-1:-1;;;;;2788:20:70;;2798:10;2788:20;2780:49;;;;-1:-1:-1;;;2780:49:70;;;;;;;:::i;:::-;2843:40;2854:6;2862:12;2876:6;2843:10;:40::i;:::-;2921:53;;;;;2904:14;;-1:-1:-1;;;;;2921:19:70;;;;;:53;;2941:6;;2949:9;;2968:4;;2921:53;;;:::i;3525:153:69:-;3603:13;3640:31;3667:3;3640:26;:31::i;:::-;3628:43;3525:153;-1:-1:-1;;;3525:153:69:o;4796:358::-;5081:66;4998;4989:75;;4988:159;4796:358;;;;:::o;6626:375::-;6701:7;6721:12;6735:13;6752:31;6779:3;6752:26;:31::i;:::-;6720:63;;;;6798:33;6827:3;6798:28;:33::i;:::-;6794:179;;;6947:1;6941:4;6934:15;6989:5;6626:375;-1:-1:-1;;;6626:375:69:o;2421:369:48:-;2502:78;2536:6;2511:21;:31;;11046:3:14;2502:8:48;:78::i;:::-;2669:12;2687:9;-1:-1:-1;;;;;2687:14:48;2710:6;2687:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2668:54;;;2732:51;2741:7;11109:3:14;2732:8:48;:51::i;5878:392:69:-;5969:12;5984:20;6000:3;5984:15;:20::i;:::-;6235:19;;;;-1:-1:-1;;6221:43:69:o;385:111:47:-;431:7;461:1;457;:5;:32;;487:1;486:2;;457:32;;;473:1;457:32;450:39;385:111;-1:-1:-1;;385:111:47:o;3684:360:69:-;3812:11;3808:24;;3825:7;;3808:24;3866:15;;;3879:1;3866:15;;;;;;;;;3841:22;;3866:15;;;;;;;;;;;-1:-1:-1;3866:15:69;3841:40;;3903:5;3891:6;3898:1;3891:9;;;;;;;;-1:-1:-1;;;;;3891:17:69;;;;:9;;;;;;;;;;;:17;3945:16;;;3959:1;3945:16;;;;;;;;;3918:24;;3945:16;;;;;;;;;;;;-1:-1:-1;3945:16:69;3918:43;;3984:6;3971:7;3979:1;3971:10;;;;;;;;;;;;;:19;;;;;4001:36;4013:6;4021;4029:7;4001:11;:36::i;3494:278:48:-;3569:12;3653;3667:23;3694:6;-1:-1:-1;;;;;3694:11:48;3706:4;3694:17;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3652:59;;;;3728:37;3745:7;3754:10;3728:16;:37::i;:::-;3721:44;3494:278;-1:-1:-1;;;;;3494:278:48:o;896:312:44:-;1193:6;1173:27;;896:312::o;5822:336:76:-;5942:12;5982:17;5974:4;:25;;;;;;;5970:182;;;6022:53;6066:8;6022:43;:53::i;:::-;6015:60;;;;5970:182;6106:35;7111:3:14;6106:7:76;:35::i;1193:166:47:-;1251:7;1270:37;1284:1;1279;:6;;5172:1:14;1270:8:47;:37::i;:::-;-1:-1:-1;1329:5:47;;;1193:166::o;2762:110:60:-;2858:5;2762:110::o;1705:105::-;-1:-1:-1;;;;;1781:22:60;;;1705:105::o;10110:336:76:-;10230:12;10270:17;10262:4;:25;;;;;;;10258:182;;;10310:53;10354:8;10310:43;:53::i;10258:182::-;10394:35;8698:3:14;10394:7:76;:35::i;7195:404:69:-;7266:12;7280:13;7312:20;7328:3;7312:15;:20::i;:::-;7305:27;;7578:4;7572:11;7563:20;;7549:44;;;:::o;5271:505::-;5620:66;5611:75;5703:66;5610:159;;5271:505::o;918:101:14:-;987:9;982:34;;998:18;1006:9;998:7;:18::i;:::-;918:101;;:::o;7755:595:69:-;7815:7;8341:1;8286:27;8309:3;8286:22;:27::i;:::-;8315:20;8269:67;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;8269:67:69;;;;;;8259:78;;8269:67;8259:78;;;;8251:91;;7755:595;-1:-1:-1;;7755:595:69:o;4050:628::-;4195:33;4258:6;:13;4231:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4195:77;;4287:9;4282:346;4302:6;:13;4298:1;:17;4282:346;;;4345:272;;;;;;;;;;4560:42;4345:272;;;;4406:6;4413:1;4406:9;;;;;;;;;;;;;;-1:-1:-1;;;;;4345:272:69;;;;;4443:7;4451:1;4443:10;;;;;;;;;;;;;;4345:272;;;;4479:6;-1:-1:-1;;;;;4345:272:69;;;;;4530:4;-1:-1:-1;;;;;4345:272:69;;;;4336:3;4340:1;4336:6;;;;;;;;;;;;;;;;;:281;4317:3;;4282:346;;;;4638:10;:8;:10::i;:::-;-1:-1:-1;;;;;4638:28:69;;4667:3;4638:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;5057:714:48;5145:12;5173:7;5169:596;;;-1:-1:-1;5203:10:48;5196:17;;5169:596;5314:17;;:21;5310:445;;5571:10;5565:17;5631:15;5618:10;5614:2;5610:19;5603:44;5520:145;5703:37;11712:3:14;5703:7:48;:37::i;6164:557:76:-;6257:12;6281:34;6318:39;6348:8;6318:29;:39::i;:::-;6281:76;-1:-1:-1;6380:57:76;6372:4;:65;;;;;;;;;6368:347;;;6460:55;6506:8;6460:45;:55::i;:::-;6453:62;;;;;6368:347;6696:8;6689:15;;;;;1437:126:14;1484:28;1492:9;1484:28;:7;:28::i;:::-;1437:126;:::o;10452:728:76:-;10545:12;10569:34;10606:39;10636:8;10606:29;:39::i;:::-;10569:76;-1:-1:-1;10668:60:76;10660:4;:68;;;;;;;;;10656:518;;;10751:57;10799:8;10751:47;:57::i;10656:518::-;10837:57;10829:4;:65;;;;;;;;;10825:349;;;10917:55;10963:8;10917:45;:55::i;8541:174:69:-;8641:66;8635:72;;8541:174::o;1220:122:13:-;1280:8;1318:4;1307:28;;;;;;;;;;;;:::i;6727:827:76:-;6822:12;6847:26;6875:23;6902:53;6946:8;6902:43;:53::i;:::-;6846:109;;;;6966:20;7009:9;7004:268;7028:9;:16;7024:1;:20;7004:268;;;7065:14;7082:9;7092:1;7082:12;;;;;;;;;;;;;;7065:29;;7112:27;7132:6;7112:19;:27::i;:::-;7108:154;;;7174:33;7200:6;7174:25;:33::i;:::-;7159:9;7169:1;7159:12;;;;;;;;;;;;;:48;;;;;7243:4;7225:22;;7108:154;-1:-1:-1;7046:3:76;;7004:268;;;;7389:15;:158;;7539:8;7389:158;;;7434:57;7493:9;7504:15;7423:97;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7370:177;6727:827;-1:-1:-1;;;;;6727:827:76:o;1670:3378:14:-;-1:-1:-1;;;1732:18:14;4383:79;;;4601:66;4595:4;4588:80;4743:1;4737:4;4730:15;2871:2;2904:18;;;2949;;;2876:4;2945:29;;;3747:1;3838:14;2856:18;;;;3827:26;;;;2997:18;;;;3044;;;3040:29;;3859:2;3855:17;3823:50;3737:4;3743:18;;;;;;3733:29;3729:2;3725:38;3802:72;;;;3797:3;3793:82;4810:4;4803:26;1761:14;;;;;5036:3;;5026:14;11186:605:76;11283:12;11308:19;11329:18;11351:52;11394:8;11351:42;:52::i;:::-;11307:96;;;;11418:32;11438:11;11418:19;:32::i;:::-;11414:371;;;11480:38;11506:11;11480:25;:38::i;:::-;11466:52;;11550:60;11612:11;11625:10;11539:97;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11532:104;;;;;;11414:371;11766:8;11759:15;;;;;;11797:567;11892:12;11916:19;11938:53;11982:8;11938:43;:53::i;:::-;11916:75;;12006:32;12026:11;12006:19;:32::i;:::-;12002:356;;;12068:38;12094:11;12068:25;:38::i;:::-;12054:52;;12138:57;12197:11;12127:82;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12120:89;;;;;1664:253:13;1762:26;1790:23;1873:4;1862:48;;;;;;;;;;;;:::i;:::-;1829:81;;;;-1:-1:-1;1664:253:13;-1:-1:-1;;;1664:253:13:o;2330:207::-;2403:19;2424:18;2495:4;2484:46;;;;;;;;;;;;:::i;2543:167::-;2617:19;2677:4;2666:37;;;;;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;283:146::-;358:20;;383:41;358:20;383:41;:::i;454:352::-;;;584:3;577:4;569:6;565:17;561:27;551:2;;-1:-1;;592:12;551:2;-1:-1;622:20;;662:18;651:30;;648:2;;;-1:-1;;684:12;648:2;728:4;720:6;716:17;704:29;;779:3;728:4;;763:6;759:17;720:6;745:32;;742:41;739:2;;;796:1;;786:12;739:2;544:262;;;;;:::o;1241:752::-;;1373:3;1366:4;1358:6;1354:17;1350:27;1340:2;;-1:-1;;1381:12;1340:2;1428:6;1415:20;1450:95;1465:79;1537:6;1465:79;:::i;:::-;1450:95;:::i;:::-;1573:21;;;1441:104;-1:-1;1617:4;1630:14;;;;1605:17;;;1719;;;1710:27;;;;1707:36;-1:-1;1704:2;;;1756:1;;1746:12;1704:2;1781:1;1766:221;1791:6;1788:1;1785:13;1766:221;;;8029:6;8016:20;8041:48;8083:5;8041:48;:::i;:::-;1859:65;;1938:14;;;;1966;;;;1813:1;1806:9;1766:221;;;1770:14;;;;;1333:660;;;;:::o;3591:771::-;;3739:3;3732:4;3724:6;3720:17;3716:27;3706:2;;-1:-1;;3747:12;3706:2;3794:6;3781:20;3816:111;3831:95;3919:6;3831:95;:::i;3816:111::-;3955:21;;;3807:120;-1:-1;3999:4;4012:14;;;;3987:17;;;4107:1;4092:264;4117:6;4114:1;4111:13;4092:264;;;4200:3;4187:17;3991:6;4175:30;10991:4;;-1:-1;;4175:30;10974:3;10970:19;;10966:30;10963:2;;;4107:1;;10999:12;10963:2;11027:20;10991:4;11027:20;:::i;:::-;3999:4;4175:30;;7057:20;11113:16;11106:75;11304:22;;4175:30;11304:22;15747:20;3999:4;11269:5;11265:16;11258:75;11457:22;;4175:30;11457:22;15747:20;11304:22;11422:5;11418:16;11411:75;11603:22;;;;4175:30;11603:22;15747:20;11457:22;11568:5;11564:16;11557:75;;10991:4;4175:30;11710:19;11697:33;11683:47;;11750:18;11742:6;11739:30;11736:2;;;4107:1;;11772:12;11736:2;11817:58;11871:3;3999:4;11862:6;4175:30;11847:22;;11817:58;:::i;:::-;11799:16;;;11792:84;4212:81;;-1:-1;;4307:14;;;;4335;;;;4139:1;4132:9;4092:264;;4416:388;;;4582:3;4575:4;4567:6;4563:17;4559:27;4549:2;;-1:-1;;4590:12;4549:2;-1:-1;4620:20;;4660:18;4649:30;;4646:2;;;-1:-1;;4682:12;4646:2;4726:4;4718:6;4714:17;4702:29;;4777:3;4726:4;4769;4761:6;4757:17;4718:6;4743:32;;4740:41;4737:2;;;4794:1;;4784:12;5261:707;;5378:3;5371:4;5363:6;5359:17;5355:27;5345:2;;-1:-1;;5386:12;5345:2;5433:6;5420:20;5455:80;5470:64;5527:6;5470:64;:::i;5455:80::-;5563:21;;;5446:89;-1:-1;5607:4;5620:14;;;;5595:17;;;5709;;;5700:27;;;;5697:36;-1:-1;5694:2;;;5746:1;;5736:12;5694:2;5771:1;5756:206;5781:6;5778:1;5775:13;5756:206;;;15747:20;;5849:50;;5913:14;;;;5941;;;;5803:1;5796:9;5756:206;;5994:722;;6122:3;6115:4;6107:6;6103:17;6099:27;6089:2;;-1:-1;;6130:12;6089:2;6170:6;6164:13;6192:80;6207:64;6264:6;6207:64;:::i;6192:80::-;6300:21;;;6183:89;-1:-1;6344:4;6357:14;;;;6332:17;;;6446;;;6437:27;;;;6434:36;-1:-1;6431:2;;;6483:1;;6473:12;6431:2;6508:1;6493:217;6518:6;6515:1;6512:13;6493:217;;;15895:13;;6586:61;;6661:14;;;;6689;;;;6540:1;6533:9;6493:217;;6724:124;6788:20;;6813:30;6788:20;6813:30;:::i;7486:440::-;;7587:3;7580:4;7572:6;7568:17;7564:27;7554:2;;-1:-1;;7595:12;7554:2;7642:6;7629:20;80689:18;80681:6;80678:30;80675:2;;;-1:-1;;80711:12;80675:2;7664:64;80852:4;-1:-1;;7580:4;80769:6;80765:17;80761:33;80842:15;7664:64;:::i;:::-;7655:73;;7748:6;7741:5;7734:21;7852:3;80852:4;7843:6;7776;7834:16;;7831:25;7828:2;;;7869:1;;7859:12;7828:2;92182:6;80852:4;7776:6;7772:17;80852:4;7810:5;7806:16;92159:30;92238:1;92220:16;;;80852:4;92220:16;92213:27;7810:5;7547:379;-1:-1;;7547:379::o;10054:158::-;10135:20;;95566:1;95556:12;;95546:2;;95582:1;;95572:12;10219:156;10299:20;;95680:1;95670:12;;95660:2;;95696:1;;95686:12;11940:1120;;12062:4;12050:9;12045:3;12041:19;12037:30;12034:2;;;-1:-1;;12070:12;12034:2;12098:20;12062:4;12098:20;:::i;:::-;12089:29;;12183:17;12170:31;12221:18;;12213:6;12210:30;12207:2;;;12198:1;;12243:12;12207:2;12288:89;12373:3;12364:6;12353:9;12349:22;12288:89;:::i;:::-;12270:16;12263:115;12476:2;12465:9;12461:18;12448:32;12434:46;;12221:18;12492:6;12489:30;12486:2;;;12198:1;;12522:12;12486:2;12567:74;12637:3;12628:6;12617:9;12613:22;12567:74;:::i;:::-;12476:2;12553:5;12549:16;12542:100;12735:2;12724:9;12720:18;12707:32;12693:46;;12221:18;12751:6;12748:30;12745:2;;;12198:1;;12781:12;12745:2;;12826:58;12880:3;12871:6;12860:9;12856:22;12826:58;:::i;:::-;12735:2;12812:5;12808:16;12801:84;;12992:46;13034:3;12959:2;13014:9;13010:22;12992:46;:::i;:::-;12959:2;12978:5;12974:16;12967:72;12028:1032;;;;:::o;13104:166::-;;13222:3;13213:6;13208:3;13204:16;13200:26;13197:2;;;-1:-1;;13229:12;13197:2;-1:-1;13249:15;13190:80;-1:-1;13190:80::o;15958:126::-;16023:20;;89831:4;89820:16;;96138:33;;96128:2;;96185:1;;96175:12;16091:241;;16195:2;16183:9;16174:7;16170:23;16166:32;16163:2;;;-1:-1;;16201:12;16163:2;85:6;72:20;97:33;124:5;97:33;:::i;16339:263::-;;16454:2;16442:9;16433:7;16429:23;16425:32;16422:2;;;-1:-1;;16460:12;16422:2;226:6;220:13;238:33;265:5;238:33;:::i;16609:617::-;;;;;16764:3;16752:9;16743:7;16739:23;16735:33;16732:2;;;-1:-1;;16771:12;16732:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;16823:63;-1:-1;16923:2;16962:22;;72:20;97:33;72:20;97:33;:::i;:::-;16726:500;;16931:63;;-1:-1;;;;17031:2;17070:22;;15747:20;;17139:2;17178:22;15747:20;;16726:500::o;17233:609::-;;;;;17387:2;17375:9;17366:7;17362:23;17358:32;17355:2;;;-1:-1;;17393:12;17355:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;17445:63;-1:-1;17545:2;17581:22;;6788:20;6813:30;6788:20;6813:30;:::i;:::-;17553:60;-1:-1;17678:2;17663:18;;17650:32;17702:18;17691:30;;;17688:2;;;-1:-1;;17724:12;17688:2;17809:6;17798:9;17794:22;;;7255:3;7248:4;7240:6;7236:17;7232:27;7222:2;;-1:-1;;7263:12;7222:2;7306:6;7293:20;17702:18;7325:6;7322:30;7319:2;;;-1:-1;;7355:12;7319:2;7450:3;17545:2;7430:17;7391:6;7416:32;;7413:41;7410:2;;;-1:-1;;7457:12;7410:2;17349:493;;;;-1:-1;;17545:2;7387:17;;-1:-1;;;17349:493::o;17849:491::-;;;;17987:2;17975:9;17966:7;17962:23;17958:32;17955:2;;;-1:-1;;17993:12;17955:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;18045:63;18145:2;18184:22;;15747:20;;-1:-1;18253:2;18292:22;;;15747:20;;17949:391;-1:-1;;;17949:391::o;18347:522::-;;;;18503:2;18491:9;18482:7;18478:23;18474:32;18471:2;;;-1:-1;;18509:12;18471:2;18567:17;18554:31;18605:18;18597:6;18594:30;18591:2;;;-1:-1;;18627:12;18591:2;18665:80;18737:7;18728:6;18717:9;18713:22;18665:80;:::i;:::-;18647:98;;;;-1:-1;18782:2;18821:22;;;;15747:20;;18465:404;-1:-1;;;;18465:404::o;18876:457::-;;;19045:2;19033:9;19024:7;19020:23;19016:32;19013:2;;;-1:-1;;19051:12;19013:2;19109:17;19096:31;19147:18;19139:6;19136:30;19133:2;;;-1:-1;;19169:12;19133:2;19207:110;19309:7;19300:6;19289:9;19285:22;19207:110;:::i;:::-;19189:128;;;;-1:-1;19007:326;-1:-1;;;;19007:326::o;19340:390::-;;19479:2;;19467:9;19458:7;19454:23;19450:32;19447:2;;;-1:-1;;19485:12;19447:2;19536:17;19530:24;19574:18;19566:6;19563:30;19560:2;;;-1:-1;;19596:12;19560:2;19682:22;;2946:4;2934:17;;2930:27;-1:-1;2920:2;;-1:-1;;2961:12;2920:2;3001:6;2995:13;3023:79;3038:63;3094:6;3038:63;:::i;3023:79::-;3130:21;;;3187:14;;;;3162:17;;;3276;;;3267:27;;;;3264:36;-1:-1;3261:2;;;-1:-1;;3303:12;3261:2;-1:-1;3329:10;;3323:216;3348:6;3345:1;3342:13;3323:216;;;10775:13;;3416:60;;3370:1;3363:9;;;;;3490:14;;;;3518;;3323:216;;;-1:-1;19616:98;19441:289;-1:-1;;;;;;;19441:289::o;19737:588::-;;;;19926:2;19914:9;19905:7;19901:23;19897:32;19894:2;;;-1:-1;;19932:12;19894:2;19990:17;19977:31;20028:18;;20020:6;20017:30;20014:2;;;-1:-1;;20050:12;20014:2;20184:6;20173:9;20169:22;;;5013:3;5006:4;4998:6;4994:17;4990:27;4980:2;;-1:-1;;5021:12;4980:2;5064:6;5051:20;20028:18;5083:6;5080:30;5077:2;;;-1:-1;;5113:12;5077:2;5208:3;5157:4;5200;5192:6;5188:17;5149:6;5174:32;;5171:41;5168:2;;;-1:-1;;5215:12;5168:2;5157:4;5145:17;;;;20070:131;;-1:-1;20277:22;;;;15747:20;;19888:437;-1:-1;;;;19888:437::o;20332:392::-;;20472:2;20460:9;20451:7;20447:23;20443:32;20440:2;;;-1:-1;;20478:12;20440:2;20529:17;20523:24;20567:18;20559:6;20556:30;20553:2;;;-1:-1;;20589:12;20553:2;20619:89;20700:7;20691:6;20680:9;20676:22;20619:89;:::i;:::-;20609:99;20434:290;-1:-1;;;;20434:290::o;20731:257::-;;20843:2;20831:9;20822:7;20818:23;20814:32;20811:2;;;-1:-1;;20849:12;20811:2;6936:6;6930:13;6948:30;6972:5;6948:30;:::i;20995:859::-;;;;;;;21179:3;21167:9;21158:7;21154:23;21150:33;21147:2;;;-1:-1;;21186:12;21147:2;6801:6;6788:20;6813:30;6837:5;6813:30;:::i;:::-;21238:60;-1:-1;21335:2;21374:22;;72:20;97:33;72:20;97:33;:::i;:::-;21343:63;-1:-1;21443:2;21482:22;;15747:20;;-1:-1;21569:51;21612:7;21551:2;21588:22;;21569:51;:::i;:::-;21559:61;;21657:3;21701:9;21697:22;7057:20;21666:63;;21766:3;21810:9;21806:22;7057:20;21775:63;;21141:713;;;;;;;;:::o;21861:1293::-;;;;;;;;22176:3;22164:9;22155:7;22151:23;22147:33;22144:2;;;-1:-1;;22183:12;22144:2;7070:6;7057:20;22235:63;;22353:67;22412:7;22335:2;22392:9;22388:22;22353:67;:::i;:::-;22343:77;;22457:2;22500:9;22496:22;72:20;97:33;124:5;97:33;:::i;:::-;22465:63;-1:-1;22565:2;22612:22;;358:20;383:41;358:20;383:41;:::i;:::-;22573:71;-1:-1;22709:3;22694:19;;22681:33;22734:18;22723:30;;;22720:2;;;-1:-1;;22756:12;22720:2;22786:86;22864:7;22855:6;22844:9;22840:22;22786:86;:::i;:::-;22776:96;;22937:3;22926:9;22922:19;22909:33;22895:47;;22734:18;22954:6;22951:30;22948:2;;;-1:-1;;22984:12;22948:2;;23022:116;23130:7;23121:6;23110:9;23106:22;23022:116;:::i;:::-;22138:1016;;;;-1:-1;22138:1016;;-1:-1;22138:1016;;;;23004:134;;-1:-1;;;22138:1016::o;23161:1175::-;;;;;;;;23414:3;23402:9;23393:7;23389:23;23385:33;23382:2;;;-1:-1;;23421:12;23382:2;7070:6;7057:20;23473:63;;23591:67;23650:7;23573:2;23630:9;23626:22;23591:67;:::i;:::-;23581:77;;23695:2;23738:9;23734:22;72:20;97:33;124:5;97:33;:::i;:::-;23703:63;-1:-1;23803:2;23842:22;;72:20;97:33;72:20;97:33;:::i;:::-;23811:63;-1:-1;23939:3;23924:19;;23911:33;23964:18;23953:30;;23950:2;;;-1:-1;;23986:12;23950:2;24016:86;24094:7;24085:6;24074:9;24070:22;24016:86;:::i;:::-;24006:96;;;24139:3;24183:9;24179:22;15747:20;24148:63;;24248:3;24292:9;24288:22;15747:20;24257:63;;23376:960;;;;;;;;;;:::o;24343:1159::-;;;;;;;;;24585:3;24573:9;24564:7;24560:23;24556:33;24553:2;;;-1:-1;;24592:12;24553:2;8205:6;8192:20;8217:57;8268:5;8217:57;:::i;:::-;24644:87;-1:-1;24768:2;24807:22;;72:20;97:33;72:20;97:33;:::i;:::-;24776:63;-1:-1;24876:2;24915:22;;15747:20;;-1:-1;24984:2;25023:22;;15747:20;;-1:-1;25092:3;25129:22;;6788:20;6813:30;6788:20;6813:30;:::i;:::-;25101:60;-1:-1;25217:51;25260:7;25198:3;25236:22;;25217:51;:::i;:::-;25207:61;;25305:3;25349:9;25345:22;7057:20;25314:63;;25414:3;25458:9;25454:22;7057:20;25423:63;;24547:955;;;;;;;;;;;:::o;25509:1033::-;;;;;;;;25734:3;25722:9;25713:7;25709:23;25705:33;25702:2;;;-1:-1;;25741:12;25702:2;8387:6;8374:20;8399:54;8447:5;8399:54;:::i;:::-;25793:84;-1:-1;25914:2;25953:22;;72:20;97:33;72:20;97:33;:::i;:::-;25922:63;-1:-1;26022:2;26061:22;;15747:20;;-1:-1;26130:2;26169:22;;15747:20;;-1:-1;26257:51;26300:7;26238:3;26276:22;;26257:51;:::i;:::-;26247:61;;26345:3;26389:9;26385:22;7057:20;26354:63;;26454:3;26498:9;26494:22;7057:20;26463:63;;25696:846;;;;;;;;;;:::o;26849:396::-;;;26985:2;26973:9;26964:7;26960:23;26956:32;26953:2;;;-1:-1;;26991:12;26953:2;8560:6;8547:20;8572:48;8614:5;8572:48;:::i;:::-;27043:78;27158:2;27197:22;;;;15747:20;;-1:-1;;;26947:298::o;27252:777::-;;;;;;27441:3;27429:9;27420:7;27416:23;27412:33;27409:2;;;-1:-1;;27448:12;27409:2;8900:6;8887:20;8912:50;8956:5;8912:50;:::i;:::-;27500:80;-1:-1;27617:2;27656:22;;72:20;97:33;72:20;97:33;:::i;:::-;27625:63;-1:-1;27725:2;27764:22;;72:20;97:33;72:20;97:33;:::i;:::-;27403:626;;;;-1:-1;27733:63;;27833:2;27872:22;;15747:20;;-1:-1;27941:3;27981:22;15747:20;;27403:626;-1:-1;;27403:626::o;29144:677::-;;;;;29329:3;29317:9;29308:7;29304:23;29300:33;29297:2;;;-1:-1;;29336:12;29297:2;9271:6;9258:20;9283:63;9340:5;9283:63;:::i;:::-;29388:93;-1:-1;29518:2;29557:22;;72:20;97:33;72:20;97:33;:::i;:::-;29526:63;-1:-1;29626:2;29665:22;;72:20;97:33;72:20;97:33;:::i;:::-;29291:530;;;;-1:-1;29634:63;;29734:2;29773:22;15747:20;;-1:-1;;29291:530::o;29828:911::-;;;;;;;30038:3;30026:9;30017:7;30013:23;30009:33;30006:2;;;-1:-1;;30045:12;30006:2;9462:6;9449:20;9474:57;9525:5;9474:57;:::i;:::-;30097:87;-1:-1;30221:2;30260:22;;72:20;97:33;72:20;97:33;:::i;:::-;30229:63;-1:-1;30329:2;30368:22;;72:20;97:33;72:20;97:33;:::i;:::-;30337:63;-1:-1;30437:2;30476:22;;15747:20;;-1:-1;30545:3;30582:22;;6788:20;6813:30;6788:20;6813:30;:::i;:::-;30554:60;;;;30651:3;30695:9;30691:22;15747:20;30660:63;;30000:739;;;;;;;;:::o;31540:287::-;;31667:2;31655:9;31646:7;31642:23;31638:32;31635:2;;;-1:-1;;31673:12;31635:2;9820:6;9814:13;9832:45;9871:5;9832:45;:::i;31834:423::-;;;31978:2;31966:9;31957:7;31953:23;31949:32;31946:2;;;-1:-1;;31984:12;31946:2;9820:6;9814:13;9832:45;9871:5;9832:45;:::i;:::-;32159:2;32209:22;;;;15895:13;32036:86;;15895:13;;-1:-1;;;31940:317::o;32264:559::-;;;;32425:2;32413:9;32404:7;32400:23;32396:32;32393:2;;;-1:-1;;32431:12;32393:2;9820:6;9814:13;9832:45;9871:5;9832:45;:::i;:::-;32606:2;32656:22;;15895:13;32725:2;32775:22;;;15895:13;32483:86;;15895:13;;-1:-1;15895:13;32387:436;-1:-1;;;32387:436::o;33124:688::-;;;;33310:2;33298:9;33289:7;33285:23;33281:32;33278:2;;;-1:-1;;33316:12;33278:2;9820:6;9814:13;9832:45;9871:5;9832:45;:::i;:::-;33512:2;33497:18;;33491:25;33368:86;;-1:-1;33536:18;33525:30;;33522:2;;;-1:-1;;33558:12;33522:2;33588:89;33669:7;33660:6;33649:9;33645:22;33588:89;:::i;:::-;33578:99;;;33714:2;33768:9;33764:22;15895:13;33722:74;;33272:540;;;;;:::o;33819:1983::-;;;;;;;;;;;;34301:3;34289:9;34280:7;34276:23;34272:33;34269:2;;;-1:-1;;34308:12;34269:2;34370:66;34428:7;34404:22;34370:66;:::i;:::-;34360:76;;34525:18;;34501:2;34490:9;34486:18;34473:32;34514:30;34511:2;;;-1:-1;;34547:12;34511:2;34577:109;34678:7;34501:2;34490:9;34486:18;34473:32;34658:9;34654:22;34577:109;:::i;:::-;34567:119;;34525:18;34751:2;34740:9;34736:18;34723:32;34764:30;34761:2;;;-1:-1;;34797:12;34761:2;34835:95;34922:7;34751:2;34740:9;34736:18;34723:32;34902:9;34898:22;34835:95;:::i;:::-;34817:113;;-1:-1;34817:113;-1:-1;34985:87;35064:7;34967:2;35040:22;;34985:87;:::i;:::-;34975:97;;34525:18;35137:3;35126:9;35122:19;35109:33;35151:30;35148:2;;;-1:-1;;35184:12;35148:2;35222:79;35293:7;35137:3;35126:9;35122:19;35109:33;35273:9;35269:22;35222:79;:::i;:::-;35204:97;;-1:-1;35204:97;-1:-1;35338:3;35378:22;;15747:20;;-1:-1;35447:3;35487:22;;15747:20;;-1:-1;35584:3;35569:19;;35556:33;35598:30;-1:-1;35595:2;;;-1:-1;;35631:12;35595:2;;35670:116;35778:7;35584:3;35573:9;35569:19;35556:33;35758:9;35754:22;35670:116;:::i;:::-;35651:135;;;;;;;;34263:1539;;;;;;;;;;;;;;:::o;35809:1081::-;;;;;;;36060:3;36048:9;36039:7;36035:23;36031:33;36028:2;;;-1:-1;;36067:12;36028:2;36125:17;36112:31;36163:18;;36155:6;36152:30;36149:2;;;-1:-1;;36185:12;36149:2;36264:22;;;;14589:4;14568:19;;;14564:30;14561:2;;;-1:-1;;14597:12;14561:2;14625:20;14589:4;14625:20;:::i;:::-;7070:6;7057:20;14711:16;14704:75;14873:62;14931:3;14840:2;14911:9;14907:22;14873:62;:::i;:::-;14840:2;14859:5;14855:16;14848:88;15000:2;15073:9;15069:22;8016:20;8041:48;8083:5;8041:48;:::i;:::-;15000:2;15015:16;;15008:90;15196:64;15256:3;15163:2;15232:22;;15196:64;:::i;:::-;15163:2;15182:5;15178:16;15171:90;15324:3;15383:9;15379:22;15747:20;15324:3;15344:5;15340:16;15333:75;15501:3;15490:9;15486:19;15473:33;36163:18;15518:6;15515:30;15512:2;;;-1:-1;;15548:12;15512:2;15593:58;15647:3;15638:6;15627:9;15623:22;15593:58;:::i;:::-;15501:3;15579:5;15575:16;15568:84;;36205:91;;;;;;36351:87;36430:7;14840:2;36410:9;36406:22;36351:87;:::i;:::-;36022:868;;36341:97;;-1:-1;;;;15501:3;36515:22;;15747:20;;14589:4;36624:22;;15747:20;;36693:3;36733:22;;15747:20;;-1:-1;36802:3;36842:22;;;15747:20;;-1:-1;36022:868::o;36897:241::-;;37001:2;36989:9;36980:7;36976:23;36972:32;36969:2;;;-1:-1;;37007:12;36969:2;-1:-1;15747:20;;36963:175;-1:-1;36963:175::o;37145:263::-;;37260:2;37248:9;37239:7;37235:23;37231:32;37228:2;;;-1:-1;;37266:12;37228:2;-1:-1;15895:13;;37222:186;-1:-1;37222:186::o;37415:399::-;;;37547:2;37535:9;37526:7;37522:23;37518:32;37515:2;;;-1:-1;;37553:12;37515:2;-1:-1;;15895:13;;37716:2;37766:22;;;15895:13;;;;;-1:-1;37509:305::o;39838:127::-;-1:-1;;;;;89615:54;39915:45;;39909:56::o;41089:740::-;;84546:6;84541:3;84534:19;84583:4;;84578:3;84574:14;41251:93;;41444:21;-1:-1;41471:336;41496:6;41493:1;41490:13;41471:336;;;8029:6;8016:20;8041:48;8083:5;8041:48;:::i;:::-;-1:-1;;;;;89615:54;50478:65;;38187:14;;;;86786:12;;;;41518:1;41511:9;41471:336;;;-1:-1;41813:10;;41238:591;-1:-1;;;;;41238:591::o;43470:657::-;;84546:6;84541:3;84534:19;84583:4;;84578:3;84574:14;43615:92;;43791:21;-1:-1;43818:287;43843:6;43840:1;43837:13;43818:287;;;10629:20;;49040:37;;38577:14;;;;87084:12;;;;43865:1;43858:9;43818:287;;47360:670;;47543:5;82421:12;84546:6;84541:3;84534:19;84583:4;;84578:3;84574:14;47555:83;;84583:4;47709:5;81269:14;-1:-1;47748:260;47773:6;47770:1;47767:13;47748:260;;;47834:13;;49040:37;;39661:14;;;;83334;;;;47795:1;47788:9;47748:260;;48767:94;87634:13;87627:21;48822:34;;48816:45::o;49709:323::-;;49841:5;82421:12;84546:6;84541:3;84534:19;49924:52;49969:6;84583:4;84578:3;84574:14;84583:4;49950:5;49946:16;49924:52;:::i;:::-;92781:2;92761:14;-1:-1;;92757:28;49988:39;;;;84583:4;49988:39;;49789:243;-1:-1;;49789:243::o;54580:1142::-;54815:23;;54747:4;54851:38;;;82421:12;;54738:14;;;84534:19;;;54580:1142;;84583:4;;81269:14;;;;84574;;;;54580:1142;42309:290;42334:6;42331:1;42328:13;42309:290;;;42395:13;;-1:-1;;;;;89615:54;50478:65;;83334:14;;;;38187;;;;42356:1;42349:9;42309:290;;;42313:14;;84583:4;55109:5;55105:16;55099:23;55079:43;;55168:3;55162:4;55158:14;84583:4;55146:3;55142:14;55135:38;55188:103;55286:4;55272:12;55188:103;:::i;:::-;55180:111;;;;55380:4;55373:5;55369:16;55363:23;55432:3;55426:4;55422:14;55380:4;55410:3;55406:14;55399:38;55452:71;55518:4;55504:12;55452:71;:::i;:::-;55444:79;;;55621:4;55614:5;55610:16;55604:23;55633:57;55621:4;55679:3;55675:14;55661:12;55633:57;:::i;:::-;-1:-1;55706:11;54720:1002;-1:-1;;;54720:1002::o;55796:949::-;85:6;72:20;97:33;124:5;97:33;:::i;:::-;-1:-1;;;;;89615:54;;;39915:45;;86371:2;86362:12;;6788:20;;6813:30;6788:20;6813:30;:::i;:::-;87634:13;;87627:21;86371:2;56314:14;;48822:34;86628:12;;;358:20;;383:41;358:20;383:41;:::i;:::-;89615:54;86628:12;56524:14;;39915:45;86506:12;;;6788:20;6813:30;6788:20;6813:30;:::i;:::-;48849:5;87634:13;87627:21;86506:12;56713:3;56709:14;48822:34;;55928:817;;:::o;62115:271::-;;50199:5;82421:12;50310:52;50355:6;50350:3;50343:4;50336:5;50332:16;50310:52;:::i;:::-;50374:16;;;;;62249:137;-1:-1;;62249:137::o;62393:448::-;;50199:5;82421:12;50310:52;50355:6;50350:3;50343:4;50336:5;50332:16;50310:52;:::i;:::-;50374:16;;92182:6;92177:3;50374:16;92159:30;92220:16;;;92213:27;;;-1:-1;92220:16;62583:258;-1:-1;;62583:258::o;63234:392::-;49040:37;;;63487:2;63478:12;;49040:37;63589:12;;;63378:248::o;63633:222::-;-1:-1;;;;;89615:54;;;;39915:45;;63760:2;63745:18;;63731:124::o;64107:464::-;-1:-1;;;;;89615:54;;;39915:45;;89615:54;;;;64480:2;64465:18;;39915:45;87634:13;;87627:21;64557:2;64542:18;;48822:34;64300:2;64285:18;;64271:300::o;64578:527::-;;64806:2;64795:9;64791:18;-1:-1;;;;;89626:42;87444:5;89615:54;39775:3;39768:58;64932:2;64806;64932;64921:9;64917:18;64910:48;64972:123;42891:5;82421:12;84546:6;84541:3;84534:19;84574:14;64795:9;84574:14;42903:93;;64932:2;43082:5;81269:14;43094:21;;-1:-1;43121:290;43146:6;43143:1;43140:13;43121:290;;;43207:13;;89615:54;;50478:65;;83334:14;;;;38399;;;;43168:1;43161:9;43121:290;;;-1:-1;64964:131;;64777:328;-1:-1;;;;;;;;64777:328::o;65112:984::-;-1:-1;;;;;89615:54;;;39915:45;;89615:54;;;;65590:2;65575:18;;39915:45;65673:2;65658:18;;49040:37;;;;65756:2;65741:18;;49040:37;;;;87634:13;87627:21;65833:3;65818:19;;48822:34;89831:4;89820:16;65913:3;65898:19;;62068:35;65997:3;65982:19;;49040:37;66081:3;66066:19;;49040:37;;;;65425:3;65410:19;;65396:700::o;66103:884::-;-1:-1;;;;;89615:54;;;39915:45;;89615:54;;;;66559:2;66544:18;;39915:45;66642:2;66627:18;;49040:37;;;;66725:2;66710:18;;49040:37;;;;89831:4;89820:16;66804:3;66789:19;;62068:35;66888:3;66873:19;;49040:37;66972:3;66957:19;;49040:37;;;;66394:3;66379:19;;66365:622::o;66994:872::-;-1:-1;;;;;89615:54;;;39915:45;;87634:13;;87627:21;67438:2;67423:18;;48822:34;89615:54;;;;67521:2;67506:18;;39915:45;67604:2;67589:18;;49040:37;;;;89831:4;89820:16;67683:3;67668:19;;62068:35;67767:3;67752:19;;49040:37;;;;67851:3;67836:19;;49040:37;;;;67279:3;67264:19;;67250:616::o;67873:333::-;-1:-1;;;;;89615:54;;;;39915:45;;68192:2;68177:18;;49040:37;68028:2;68013:18;;67999:207::o;68213:432::-;-1:-1;;;;;89615:54;;;;39915:45;;68554:2;68539:18;;49040:37;;;;87634:13;87627:21;68631:2;68616:18;;48822:34;68390:2;68375:18;;68361:284::o;68652:558::-;-1:-1;;;;;89615:54;;;;39915:45;;69029:2;69014:18;;49040:37;;;;89534:6;89523:18;69119:2;69104:18;;52008:57;87634:13;87627:21;69196:2;69181:18;;48822:34;68864:3;68849:19;;68835:375::o;69217:517::-;69440:2;69454:47;;;69425:18;;84534:19;;;69217:517;40702:21;84574:14;;;69217:517;40729:291;40754:6;40751:1;40748:13;40729:291;;;84583:4;85:6;72:20;97:33;124:5;97:33;:::i;:::-;-1:-1;;;;;89615:54;39915:45;;86362:12;;;;37975:14;;;;40776:1;40769:9;40729:291;;;40733:14;69507:126;;;;;-1:-1;;;;;87444:5;89615:54;84583:4;69709:9;69705:18;39768:58;69411:323;;;;;;:::o;69741:518::-;69992:2;70006:47;;;69977:18;;;84534:19;;;69741:518;;84574:14;;;;45834:21;69741:518;45861:421;45886:6;45883:1;45880:13;45861:421;;;10484:6;10471:20;10496:55;10545:5;10496:55;:::i;:::-;88894:45;88933:5;88894:45;:::i;:::-;51741:70;;86958:12;;;72:20;97:33;72:20;97:33;:::i;:::-;-1:-1;;;;;89615:54;59920:14;;;39915:45;60032:16;;;15747:20;60103:14;;;49040:37;60226:4;60182:50;60215:16;;;60036:5;60182:50;:::i;:::-;60238:63;60226:4;60290:3;60286:14;60272:12;60238:63;:::i;:::-;;;60420:4;60368:58;60420:4;60413:5;60409:16;60402:5;60368:58;:::i;:::-;60432:79;60420:4;60500:3;60496:14;60482:12;60432:79;:::i;:::-;-1:-1;;39182:4;39173:14;;;;84138;;;;;45908:1;45901:9;45861:421;;;-1:-1;70059:190;;69963:296;-1:-1;;;;;;;69963:296::o;70266:494::-;70505:2;70519:47;;;82421:12;;70490:18;;;84534:19;;;70266:494;;70505:2;84574:14;;;;;;81269;;;70266:494;46946:353;46971:6;46968:1;46965:13;46946:353;;;47038:6;47032:13;60821:16;60815:23;88894:45;88933:5;88894:45;:::i;:::-;51741:70;;60996:16;;;60990:23;-1:-1;;;;;89615:54;61082:14;;;39915:45;61167:16;;;61161:23;61238:14;;;49040:37;61334:4;61323:16;;;61317:23;61346:63;61394:14;;;61317:23;61346:63;:::i;:::-;-1:-1;;61493:4;61482:16;;;61476:23;;61505:79;61569:14;;;61476:23;61505:79;:::i;:::-;-1:-1;;39488:4;39479:14;;;;;83334;;;;46993:1;46986:9;46946:353;;;-1:-1;70572:178;;70476:284;-1:-1;;;;;;;70476:284::o;70767:768::-;;49070:5;49047:3;49040:37;-1:-1;;;;;89626:42;87444:5;89615:54;71225:2;71214:9;71210:18;39915:45;89626:42;87444:5;89615:54;71324:2;71313:9;71309:18;39915:45;;71060:3;71361:2;71350:9;71346:18;71339:48;71401:124;71060:3;71049:9;71045:19;71511:6;71401:124;:::i;:::-;71393:132;71031:504;-1:-1;;;;;;71031:504::o;72823:353::-;72988:2;72973:18;;88894:45;88933:5;88894:45;:::i;:::-;51135:60;;;73162:2;73147:18;49040:37;72959:217;:::o;73183:464::-;73376:2;73361:18;;88894:45;88933:5;88894:45;:::i;:::-;51135:60;;;73550:2;73535:18;;49040:37;;;;73633:2;73618:18;;;49040:37;73347:300;:::o;73654:612::-;;88894:45;88933:5;88894:45;:::i;:::-;91392:36;51295:3;51288:60;73897:2;74025;74014:9;74010:18;74003:48;74065:108;73897:2;73886:9;73882:18;74159:6;74065:108;:::i;:::-;74057:116;;49070:5;74252:2;74241:9;74237:18;49040:37;73868:398;;;;;;:::o;74273:1568::-;;74862:3;;74851:9;74847:19;89169:46;89209:5;89169:46;:::i;:::-;51432:61;;;74992:2;74977:18;;;74970:48;;;;82421:12;;84534:19;;;;84574:14;;;;;44681:17;;;44672:27;;;;;;81269:14;;;-1:-1;44840:423;44865:6;44862:1;44859:13;44840:423;;;44917:20;;;;;44905:33;;44966:13;;53667:23;;49040:37;;53835:16;;;53829:23;53906:14;;;49040:37;54009:4;53998:16;;;53992:23;54069:14;;;49040:37;54165:4;54154:16;;;54148:23;54225:14;;;49040:37;54323:4;54312:16;;;54306:23;53599:4;54349:14;;;54342:38;;;54306:23;54395:71;53590:14;;;54306:23;54395:71;:::i;:::-;45242:14;;;;44986:134;-1:-1;;;83334:14;;;;44887:1;44880:9;44840:423;;;44844:14;;;;75250:9;75244:4;75240:20;54009:4;75224:9;75220:18;75213:48;75275:133;75403:4;75394:6;75386;75275:133;:::i;:::-;75267:141;;;75419:138;54165:4;75542:9;75538:18;75529:6;75419:138;:::i;:::-;75606:9;75600:4;75596:20;75590:3;75579:9;75575:19;75568:49;75631:116;75742:4;75733:6;75725;75631:116;:::i;:::-;75623:124;;;49070:5;75826:3;75815:9;75811:19;49040:37;74833:1008;;;;;;;;;;;:::o;75848:416::-;76048:2;76062:47;;;52302:2;76033:18;;;84534:19;52338:18;84574:14;;;52318:39;52376:12;;;76019:245::o;76271:416::-;76471:2;76485:47;;;52627:2;76456:18;;;84534:19;52663:33;84574:14;;;52643:54;52716:12;;;76442:245::o;76694:416::-;76894:2;76908:47;;;53272:2;76879:18;;;84534:19;53308:27;84574:14;;;53288:48;53355:12;;;76865:245::o;77117:850::-;;77450:3;77472:17;77465:47;58261:16;58255:23;77450:3;77439:9;77435:19;49040:37;58426:4;58419:5;58415:16;58409:23;89169:46;89209:5;89169:46;:::i;:::-;58497:14;;;51432:61;58594:4;58583:16;;58577:23;-1:-1;;;;;89615:54;;;58669:14;;;50478:65;58767:4;58756:16;;58750:23;89615:54;58842:14;;;50478:65;58938:4;58927:16;;58921:23;58998:14;;;49040:37;59096:4;59085:16;;59079:23;58187:4;59122:14;;;59115:38;59168:71;58178:14;;;59079:23;59168:71;:::i;:::-;77518:122;;;77651:138;58426:4;77774:9;77770:18;77761:6;77651:138;:::i;:::-;59096:4;77853:19;;49040:37;;;;58187:4;77937:19;49040:37;77421:546;;-1:-1;;77421:546::o;77974:222::-;49040:37;;;78101:2;78086:18;;78072:124::o;78203:333::-;49040:37;;;-1:-1;;;;;89615:54;78522:2;78507:18;;39915:45;78358:2;78343:18;;78329:207::o;78543:444::-;49040:37;;;-1:-1;;;;;89615:54;;;78890:2;78875:18;;39915:45;89615:54;78973:2;78958:18;;39915:45;78726:2;78711:18;;78697:290::o;78994:256::-;79056:2;79050:9;79082:17;;;79157:18;79142:34;;79178:22;;;79139:62;79136:2;;;79214:1;;79204:12;79136:2;79056;79223:22;79034:216;;-1:-1;79034:216::o;79257:319::-;;79431:18;79423:6;79420:30;79417:2;;;-1:-1;;79453:12;79417:2;-1:-1;79498:4;79486:17;;;79551:15;;79354:222::o;86262:119::-;;85:6;72:20;97:33;124:5;97:33;:::i;92255:268::-;92320:1;92327:101;92341:6;92338:1;92335:13;92327:101;;;92408:11;;;92402:18;92389:11;;;92382:39;92363:2;92356:10;92327:101;;;92443:6;92440:1;92437:13;92434:2;;;-1:-1;;92320:1;92490:16;;92483:27;92304:219::o;92798:103::-;92879:1;92872:5;92869:12;92859:2;;92885:9;93018:104;93100:1;93093:5;93090:12;93080:2;;93106:9;93249:117;-1:-1;;;;;93336:5;89615:54;93311:5;93308:35;93298:2;;93357:1;;93347:12;93513:111;93594:5;87634:13;87627:21;93572:5;93569:32;93559:2;;93615:1;;93605:12;95257:106;95338:1;95331:5;95328:12;95318:2;;95354:1;;95344:12"},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256,uint256,(uint256,uint256)[])":"18369446","exitPool(bytes32,uint8,address,address,(address[],uint256[],bytes,bool),(uint256,uint256)[])":"d80952d5","gaugeClaimRewards(address[])":"0e248fea","gaugeDeposit(address,address,address,uint256)":"7bc008f5","gaugeMint(address[],uint256)":"3f85d390","gaugeSetMinterApproval(bool,address,uint256,uint8,bytes32,bytes32)":"8c57198b","gaugeWithdraw(address,address,address,uint256)":"65ca4804","getEntrypoint()":"7fd0e5d5","getVault()":"8d928af8","joinPool(bytes32,uint8,address,address,(address[],uint256[],bytes,bool),uint256,uint256)":"8fe4624f","manageUserBalance((uint8,address,uint256,address,address)[],uint256)":"ecc02637","peekChainedReferenceValue(uint256)":"f3cab685","setRelayerApproval(address,bool,bytes)":"80db15bd","stakeETH(address,uint256,uint256)":"2cbec84e","stakeETHAndWrap(address,uint256,uint256)":"1089e5e3","swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256,uint256,uint256)":"2e6272ea","unwrapAaveStaticToken(address,address,address,uint256,bool,uint256)":"7ab6e03c","unwrapERC4626(address,address,address,uint256,uint256)":"efe69108","unwrapReaperVaultToken(address,address,address,uint256,uint256)":"d293f290","unwrapUnbuttonToken(address,address,address,uint256,uint256)":"611b90dd","unwrapWstETH(address,address,uint256,uint256)":"db4c0e91","vaultPermit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"8d64cfbc","vaultPermitDAI(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)":"959fc17a","wrapAaveDynamicToken(address,address,address,uint256,bool,uint256)":"433b0865","wrapERC4626(address,address,address,uint256,uint256)":"6d307ea8","wrapReaperVaultToken(address,address,address,uint256,uint256)":"e8210e3c","wrapStETH(address,address,uint256,uint256)":"1c982441","wrapUnbuttonToken(address,address,address,uint256,uint256)":"abf6d399"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"wstETH\",\"type\":\"address\"},{\"internalType\":\"contract IBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"int256[]\",\"name\":\"limits\",\"type\":\"int256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"batchSwap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum VaultActions.PoolKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"gaugeClaimRewards\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"gaugeDeposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"gaugeMint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"gaugeSetMinterApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"gaugeWithdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEntrypoint\",\"outputs\":[{\"internalType\":\"contract IBalancerRelayer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum VaultActions.PoolKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"joinPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.UserBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct IVault.UserBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manageUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"authorisation\",\"type\":\"bytes\"}],\"name\":\"setRelayerApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"stakeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"stakeETHAndWrap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStaticATokenLM\",\"name\":\"staticToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapAaveStaticToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapERC4626\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IReaperTokenVault\",\"name\":\"vaultToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapReaperVaultToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUnbuttonToken\",\"name\":\"wrapperToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapUnbuttonToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapWstETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Permit\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"vaultPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20PermitDAI\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"vaultPermitDAI\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStaticATokenLM\",\"name\":\"staticToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapAaveDynamicToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapERC4626\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IReaperTokenVault\",\"name\":\"vaultToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapReaperVaultToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapStETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUnbuttonToken\",\"name\":\"wrapperToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapUnbuttonToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approveVault(address,uint256)\":{\"details\":\"This is needed to avoid having to send intermediate tokens back to the user\"},\"peekChainedReferenceValue(uint256)\":{\"details\":\"It does not alter the reference (even if it's marked as temporary).\"},\"unwrapUnbuttonToken(address,address,address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of wrapped tokens to be burnt for underlying tokens.\",\"outputReference\":\"Chained output reference.\",\"sender\":\"The address of recepient.\",\"wrapperToken\":\"The address of the wrapper.\"}},\"wrapUnbuttonToken(address,address,address,uint256,uint256)\":{\"params\":{\"outputReference\":\"Chained output reference.\",\"sender\":\"The address of recepient.\",\"uAmount\":\"The underling token amount to be deposited into the wrapper.\",\"wrapperToken\":\"The address of the wrapper.\"}}},\"title\":\"Batch Relayer Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveVault(address,uint256)\":{\"notice\":\"Approves the Vault to use tokens held in the relayer\"},\"peekChainedReferenceValue(uint256)\":{\"notice\":\"Returns the amount referenced by chained reference `ref`.\"},\"setRelayerApproval(address,bool,bytes)\":{\"notice\":\"Sets whether a particular relayer is authorised to act on behalf of the user\"}},\"notice\":\"This contract is not a relayer by itself and calls into it directly will fail. The associated relayer can be found by calling `getEntrypoint` on this contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BatchRelayerLibrary.sol\":\"BatchRelayerLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0x1e5bca6b4fb897adc2458f65aa7abed8499dcf146ac5872c62544d91516867cb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faa81254fe029b7ccd05635d6919da30bcb2114026996d10f6b51fc0e1f5b850\",\"dweb:/ipfs/Qmax3d2kq51xjt6hjYgskuXSrsB3fBZ4LAxBPRDDzbg8XD\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0x286a4b1cb4a632954e58c68baac671fb0dcbd139c5a353b0419088b0de40477c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0b57ab7eadc573d8d23b3668b90412e65182beea79726c1a1b8cb57f76abc74a\",\"dweb:/ipfs/QmfNe6Uu4S4xMDzMktJnGz92MT6zVENi3Rye2AazUcrLL4\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0x6975f1e2199b1d9e4fff7133f9e9ab652e2f378d38551d33393eec50f459574a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2c4b81b8bb50d58afee844cdc06a04bca72b379f51eda3289a9cc4ff97a80dfc\",\"dweb:/ipfs/QmR1b9e6Ku7H3ea4yBGmUznqabtioTkktRWvhZFgRUZWy4\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0x3b9e1e7098293244e9e4b1b1e26f973949bea15e2477115fadf4b5157fcab9de\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cc5542e3a2546434ba0de87e5a3937ef0a7816cda2bc25eaaa7e8ddba2d4e281\",\"dweb:/ipfs/QmNZDUex4e3TdkxLrEyqEyusBpC4xfETwvgrqHUEyGkYNE\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xfdbd854a6467bd4aa3523b47c030858b505f87d39abdfb6e97f020a9c303fd17\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4465839b424de5a8f1b83b1f2a689076ce3d99efe2528336f32945191257abcc\",\"dweb:/ipfs/QmSVS4K9f2UMDpqXBg82r2bUeutUihk1hmYuCvw9iEeLWk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xabf0bcc23e4f5fa8e85af800f53c925e26e104ea13e238ef6762ca8221b382a4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c71e3a291a6343ad77f7b4fb4fe1df4519e6a8b6e9335743f288154ea688584f\",\"dweb:/ipfs/QmSmZ7Jrqw9reCab8H9RHuDPduiXh7YUJY1UgsMYxZ26Zp\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x01a7009af37017ca4e06fec645da25e6a5c75b4c3738a04bd227f92742cfb7ae\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae3267797ca92f4e8286a9f7fc6d59ac03d93046f544ec6740e80c100f4ebe4a\",\"dweb:/ipfs/QmUGa72iyfk54ex9qpHcgpbUcHbHDnghy136nZBkbmEZu5\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0x797adbaaae6b7c50752e62bec5e56b554cdbf1f48b1cbd062f7304ea77330f94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c811af7ea4517079e04d5e53e05b871e838f122faf70e3b47d426204b3c79bde\",\"dweb:/ipfs/QmY2oNRdUCswLSDcptE5zkuiyGg1JRk1YP5zojPqFSWLa4\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0x3d362ad70a19a0307bc9af2b053c4de85a4e0aacf1eb6b1fb5083873b8a62045\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3b141dcb49084bd633c4b95765c57e760deadf484a599e7f8fcbb74a46febe3f\",\"dweb:/ipfs/QmQz9P1bWh8mNQUxz5jdqNqwS226osyCPbQA8DznFspf4f\"]},\"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol\":{\"keccak256\":\"0xc82d42ae8b0d8beecd14924f2719b24bc602d1e8df4365dfb0cc3f63a32cb179\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a61895cdecdc5fe04ad2495dfc80a4ce438b4d42d21995739e3e225cbb786582\",\"dweb:/ipfs/QmSYVb7NwdPMXxdsvGYhWyvKNbdrP4fWRGvsygdCj5SZMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol\":{\"keccak256\":\"0xe57447223cab81039085813da021bd12552b1b27f3c7c03031b87f39b390bec3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c0a50b3ea4244e80eb180d4e6b94e7a56c9bee394ac89d085b19ff194fc10dbe\",\"dweb:/ipfs/QmYa7jzRRhjMLqrKrL8bCDX3rc5RU2rzhZ7Df7Z5r6S6L9\"]},\"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol\":{\"keccak256\":\"0x6ea477094e5c51c7f6bc107e13503fbe18db2b22b61909a2ff08106e374b0e72\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1eb6e93ae0e2758c85121bcd61226211a1f1996944c1849eafc8d30e5f7364af\",\"dweb:/ipfs/QmcTJAa437Mk9YxiXWnhKP2sVYHFEgwrjnrA6ubzJtuhFV\"]},\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":{\"keccak256\":\"0x77711c8f7dffb3ec7c6ade6aa8130dfcf905920e1f4de2cc14a8869f356c1e7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0d7b48b6172bc6ece5bb47acab7541c0e7bafe0c05b77c36231fd9d0563669ff\",\"dweb:/ipfs/QmQoqo3qshSWXD3PwkhEoLzfcZEv56zpYKAtzXEyh8h3oo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol\":{\"keccak256\":\"0xcfcb9742bedeceeebb814066f8046522ae6e6440ea87bc265f48db345f586493\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b2a25f7b7621273d0567400ba318317d738cad231aeac8aecd3051d1a484a7c1\",\"dweb:/ipfs/QmeWczGrss48e7hnBkFHThExBnZW57nPUWSLsbS3yiw8o3\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xffe929ce55ef0cbdcc60eee8bc9375c295757ad13afe3d757646538aa0429ff5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90091ad3a860b0baa930d9b4083b503eb9ce2d222f738ce3b009d434271a27ae\",\"dweb:/ipfs/QmeQxy2YHbeumMXxKqEnXF7pGw2Ke43cHzttG59WYHibVV\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol\":{\"keccak256\":\"0x5a824b0b4eef59b949b7ed26f74a5ad6a636b8ac093bde3a5c7b8a4e1fb1a6c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a89b0cf610d119abd21b5fd8a44ce2641b3ff99d20ace39609ce8df361686597\",\"dweb:/ipfs/QmZzyKTWdEftt1oJZEoj9zgXACTLZNvwQJmFZQQQrzfDgn\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":{\"keccak256\":\"0x00d423628736cf6e571187b6327a8ab9fdf947283582345cc6048ca3086b79a0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://919890e34754f13e43d3bc3f6f07674c4db0f2faf4fe7d1e8246d5513628ac72\",\"dweb:/ipfs/QmSqhMvXntJFgP7EmfZKrVG8t3oQqweYg4WWnV1JNnFUTu\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\":{\"keccak256\":\"0x82df6d6c71a197051483edc2854de4aff2318d9336647706240af5bc9b70f544\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8f40c60825147183ed5b35d09c16d2eeaf5955168e4a5dd3343fa8869090aa97\",\"dweb:/ipfs/QmY1rD9qjoh6K3T4Bgfo2QFt8jTTJPdY6yV2RkGgDRsq3Z\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x2e5cd2e8ce3f3380853a42af5891f787caa27d4aa5f5de0cd18f2f4ecf085f9c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae8aad1c72dd6ad70d9377d8b025af8ff9648fb99fcac4ed101c3ffe9d74c082\",\"dweb:/ipfs/QmQ5A29nCNj72ckV23cCEANomh5tt5UJkL4938GLYPEn4Q\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\":{\"keccak256\":\"0x63ab39ba66fa4d4dd481433cb7e38b3f4b4ef70f93849baa4dbfb505b0a32672\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://96117b89d70c2c7d33072f8d86a7193f22015493e568d0e13e9fdb15b7f912bb\",\"dweb:/ipfs/QmahkTXJxVrCozp3ivzEyh562Fnz3z5oetNiy9AmjugoJr\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\":{\"keccak256\":\"0xe34a73f883e96c7fef1750edc94b7940f0ac0fd3b43feae13cb7cde0da130c66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://027cf01075479e0a51f17678431e215d17f23773c5cb66c59ddaa6d052f5cbda\",\"dweb:/ipfs/QmPFaTfNLoKkufU6n9Q8n1k2R2WCT1vTRosNXJS4sm8WxQ\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xa50a6030616fb98d27463df96d3bd9386c157ecae82c7a71be7e0b7ba778d02f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51dbb7eeb98561aaf6cf6b48825a64a725f5d1d63cfd888711c4cb1468f52fc4\",\"dweb:/ipfs/Qmc2o8dUCBuu8PxJPrPufHmoZ6DGdMPoaXcruUqr3WuCLA\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/BatchRelayerLibrary.sol\":{\"keccak256\":\"0xb6a0e73bff14c8e165dea3d9ec704b5876af02b4ddc4ec3fc564bf7a0cf83ce1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://529ebe5ce29213d096235bea2e4c1c789145d26f4fbf7cabe50ea4c1833282a9\",\"dweb:/ipfs/QmPwrbLNXM4JzTAwo8KXhjonxazqyCAoRYHTmCD9zHef8G\"]},\"contracts/relayer/AaveWrapping.sol\":{\"keccak256\":\"0x07b2d4aa090776d6e710b18a4b1a5d5f165aa535485698eaa1c68b112807bc33\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://aa1ab801724fd42dc74b2e5871a7e6c22ffbfb19676638408abb7323335734cf\",\"dweb:/ipfs/QmPv9HHsH1MtShXSqgK8GKWsfFDCUAFRAnPwyJ51bsyhJw\"]},\"contracts/relayer/BalancerRelayer.sol\":{\"keccak256\":\"0xb69401485af333ad66e7cc091da40d25354de1870f64584d017909da9f8a8e7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e34ee5869335a6fede8b62e5ee6f81bd714b88f58fe4bf4d991d44372333627d\",\"dweb:/ipfs/QmQvEA5R5HXbyPYYC3GEeDwqcBAfsU5kLvRiNByyJqVXrx\"]},\"contracts/relayer/BaseRelayerLibrary.sol\":{\"keccak256\":\"0x52c5a0fa32cb38dfe008f6170491ca81fe394cba0fa9d6cbd13ac12fc9b2471a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8716ef72fa4f61bd91d450d5a29771e346e8ed59f30b6a74b53c6d59c0212e03\",\"dweb:/ipfs/QmTqGY7JoMF7WBNzgPFSfhFS3QkYRwEUJq6UJnTxNSnvuJ\"]},\"contracts/relayer/ERC4626Wrapping.sol\":{\"keccak256\":\"0x17714e11553f44622d97ffc851175ea16f9d70f76b8dd57edfeb9ab26188050e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af9ef5d055e44410a74d45793ea10a165ba6fb7c0982d4b196b0fd05a420c1f5\",\"dweb:/ipfs/QmZD8HPpT87G87AvM3bRpadSWJB4gEHb4dUoU6ZpY8NxJp\"]},\"contracts/relayer/GaugeActions.sol\":{\"keccak256\":\"0x9dc6be73ee966236a21296cacafb9bf7447245c090d056ae773a8b1bd6b3f5c5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fb5257cbd5c63cfbc51f1bbe854c86005a175cd8ef8328f6212ea2ef8d62d338\",\"dweb:/ipfs/QmQhLBUbgucisYiSshMxZotDq23a1Tzwq86mRi6xPQLcZD\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]},\"contracts/relayer/LidoWrapping.sol\":{\"keccak256\":\"0xc266b469754fbca3e3e965bb37cc1b8aaba351875ebb6b78146d9780c8c220a9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15ff53a01778985bf203a3ec97f502cf43f7d9ed3792742e24ef0cc4d583a91f\",\"dweb:/ipfs/QmbEVLaL2Fc3v9ak5RKyLZGQ7S8JNsY8beQkerGmFiVL7L\"]},\"contracts/relayer/ReaperWrapping.sol\":{\"keccak256\":\"0xf0194c405041c6fc22c51490bf1b1ad827eec697d17399fdaff28fd6ee38de0d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4f82e83a1be01b9da7c0ad4ebf0e4114be60e08a8e4230f346644ca78645c3f4\",\"dweb:/ipfs/QmZzrxgtYrh7ruxB3jW3RcXxgB7rmpWWsUQsnZuo1gLk9N\"]},\"contracts/relayer/UnbuttonWrapping.sol\":{\"keccak256\":\"0x3662f72fb154f14480236ddc02b20ac6f2d6668d7ee496c1f1f6d1939733d337\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://aa905d62594d8fb29d7689dd00f32ed84db63d8eb759fa182d77a9888e9e8bb5\",\"dweb:/ipfs/QmQ6BHqFGeHpijUKjCmgWe7jyQcr6kjSTahzbUvs5EbEp8\"]},\"contracts/relayer/VaultActions.sol\":{\"keccak256\":\"0x777d58a20e0e7f71eea9dc59f936f78528c02037a47076ad0747a6cb15e2e42b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://837ae5259458637d2dcb23b1f0d7bda936a50745cb36a1d4211f2dc50f3caaaf\",\"dweb:/ipfs/QmaS4wwWtbZVkG8bVqSWRHn47MPfnRHL8eUfd8Z8FchAYC\"]},\"contracts/relayer/VaultPermit.sol\":{\"keccak256\":\"0xef4705f6cdd5833cfff67df26d4b1c360b153d59429064f005b397f2a5a1b9b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9cad4c5a1c93580fdf0f39077b1efa48d14af4bce872ea89aea2ad58fd9592b2\",\"dweb:/ipfs/QmTHkG1hQugzT9B7D1nfLbD96TDiJ9YXSemVQFJX4T8agZ\"]}},\"version\":1}"}},"contracts/ProtocolFeePercentagesProvider.sol":{"ProtocolFeePercentagesProvider":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"uint256","name":"maxYieldValue","type":"uint256"},{"internalType":"uint256","name":"maxAUMValue","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"feeType","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"ProtocolFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"feeType","type":"uint256"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"uint256","name":"maximumPercentage","type":"uint256"}],"name":"ProtocolFeeTypeRegistered","type":"event"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"getFeeTypeMaximumPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"getFeeTypeName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"getFeeTypePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"isValidFeeType","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"isValidFeeTypePercentage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"maximumValue","type":"uint256"},{"internalType":"uint256","name":"initialValue","type":"uint256"}],"name":"registerFeeType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"},{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setFeeTypePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e06040523480156200001157600080fd5b5060405162001887380380620018878339810160408190526200003491620005a0565b306080526001600160601b0319606084901b1660a0526040805163d2946c2b60e01b815290516000916001600160a01b0386169163d2946c2b91600480820192602092909190829003018186803b1580156200008f57600080fd5b505afa158015620000a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ca91906200057a565b6001600160601b0319606082901b1660c052604080518082019091526005815264165a595b1960da1b60208201529091506200010c9060029085600062000277565b6200015760036040518060400160405280601781526020017f41737365747320556e646572204d616e6167656d656e740000000000000000008152508460006200027760201b60201c565b7fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5805460ff60801b1916600160801b1790556040805180820190915260048152630537761760e41b6020828101918252600080805290529051620001dd917fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb691620004e8565b507fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d805460ff60801b1916600160801b17905560408051808201909152600a815269233630b9b4102637b0b760b11b602082810191825260016000908152905290516200026c917fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7e91620004e8565b5050505050620006c4565b600082118015620002905750670de0b6b3a76400008211155b620002b85760405162461bcd60e51b8152600401620002af906200066e565b60405180910390fd5b81811115620002db5760405162461bcd60e51b8152600401620002af9062000637565b6040518060800160405280620002fc836200043f60201b620009031760201c565b6001600160401b0316815260200162000320846200043f60201b620009031760201c565b6001600160401b03908116825260016020808401829052604093840188905260008981528082528490208551815487840151968801511515600160801b0260ff60801b199787166801000000000000000002600160401b600160801b0319939097166001600160401b03199092169190911791909116949094179490941692909217835560608401518051620003bf93928501929190910190620004e8565b50905050837fe07086969b318280a21b104288d59a9c26c15ccdc203744dfe88e76b56810a768484604051620003f7929190620005d9565b60405180910390a2837f34cd0fbe9e7d58e0835610336eda810722864e47a9b1f5dc5c8f976c13c384d382604051620004319190620006a5565b60405180910390a250505050565b6000620004596001600160401b038311156101ba6200045d565b5090565b816200046e576200046e8162000472565b5050565b62000484816210905360ea1b62000487565b50565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200052b57805160ff19168380011785556200055b565b828001600101855582156200055b579182015b828111156200055b5782518255916020019190600101906200053e565b50620004599291505b8082111562000459576000815560010162000564565b6000602082840312156200058c578081fd5b81516200059981620006ae565b9392505050565b600080600060608486031215620005b5578182fd5b8351620005c281620006ae565b602085015160409095015190969495509392505050565b6000604082528351806040840152815b81811015620006085760208187018101516060868401015201620005e9565b818111156200061a5782606083860101525b50602083019390935250601f91909101601f191601606001919050565b6020808252601a908201527f496e76616c696420696e697469616c2070657263656e74616765000000000000604082015260600190565b6020808252601e908201527f496e76616c6964206d6178696d756d206665652070657263656e746167650000604082015260600190565b90815260200190565b6001600160a01b03811681146200048457600080fd5b60805160a05160601c60c05160601c61118162000706600039806101fc52806102aa52806103fa52806104ac5250806107525250806106d952506111816000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063851c1bb3116100765780638d928af81161005b5780638d928af81461016d578063aaabadc514610182578063b661eda11461018a576100be565b8063851c1bb314610147578063868897a01461015a576100be565b80635e2cae4c116100a75780635e2cae4c146101015780637268d6ce1461011457806374735e0b14610127576100be565b80631a7c3263146100c35780634d44f0e9146100ec575b600080fd5b6100d66100d1366004610de8565b6101aa565b6040516100e39190610fad565b60405180910390f35b6100ff6100fa366004610ee8565b610330565b005b6100d661010f366004610de8565b61056d565b6100ff610122366004610e18565b610608565b61013a610135366004610ee8565b61067f565b6040516100e39190610fa2565b6100d6610155366004610d74565b6106d5565b61013a610168366004610de8565b610727565b610175610750565b6040516100e39190610fe2565b610175610774565b61019d610198366004610de8565b610800565b6040516100e39190611003565b6000816101b681610727565b6101f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b60405180910390fd5b8261029f577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b15801561026057600080fd5b505afa158015610274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102989190610e00565b915061032a565b600183141561030e577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d877845c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561026057600080fd5b60008381526020819052604090205467ffffffffffffffff1691505b50919050565b8161033a81610727565b610370576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b610378610920565b610382838361067f565b6103b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec90611114565b82610466576040517f38e9922e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906338e9922e9061042f908590600401610fad565b600060405180830381600087803b15801561044957600080fd5b505af115801561045d573d6000803e3d6000fd5b50505050610530565b60018314156104e1576040517f6b6b9f6900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636b6b9f699061042f908590600401610fad565b6104ea82610903565b600084815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff929092169190911790555b827f34cd0fbe9e7d58e0835610336eda810722864e47a9b1f5dc5c8f976c13c384d3836040516105609190610fad565b60405180910390a2505050565b60008161057981610727565b6105af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b826105c4576706f05b59d3b20000915061032a565b60018314156105dc57662386f26fc10000915061032a565b60008381526020819052604090205468010000000000000000900467ffffffffffffffff16915061032a565b610610610920565b600084815260208190526040902054700100000000000000000000000000000000900460ff161561066d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec9061106f565b61067984848484610969565b50505050565b60008261068b81610727565b6106c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b6106ca8461056d565b909211159392505050565b60007f00000000000000000000000000000000000000000000000000000000000000008260405160200161070a929190610f72565b604051602081830303815290604052805190602001209050919050565b600090815260208190526040902054700100000000000000000000000000000000900460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061077e610750565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156107c357600080fd5b505afa1580156107d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fb9190610db4565b905090565b60608161080c81610727565b610842576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b60008381526020818152604091829020600190810180548451600293821615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911692909204601f8101849004840283018401909452838252909290918301828280156108f65780601f106108cb576101008083540402835291602001916108f6565b820191906000526020600020905b8154815290600101906020018083116108d957829003601f168201915b5050505050915050919050565b600061091c67ffffffffffffffff8311156101ba610b8c565b5090565b600061094f6000357fffffffff00000000000000000000000000000000000000000000000000000000166106d5565b905061096661095e8233610b9e565b610191610b8c565b50565b6000821180156109815750670de0b6b3a76400008211155b6109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110a6565b818111156109f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec90611038565b6040518060800160405280610a0583610903565b67ffffffffffffffff168152602001610a1d84610903565b67ffffffffffffffff908116825260016020808401829052604093840188905260008981528082528490208551815487840151968801511515700100000000000000000000000000000000027fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff97871668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff939097167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009092169190911791909116949094179490941692909217835560608401518051610b1093928501929190910190610cca565b50905050837fe07086969b318280a21b104288d59a9c26c15ccdc203744dfe88e76b56810a768484604051610b46929190611016565b60405180910390a2837f34cd0fbe9e7d58e0835610336eda810722864e47a9b1f5dc5c8f976c13c384d382604051610b7e9190610fad565b60405180910390a250505050565b81610b9a57610b9a81610c3b565b5050565b6000610ba8610774565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401610be493929190610fb6565b60206040518083038186803b158015610bfc57600080fd5b505afa158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c349190610d54565b9392505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610966917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610d0b57805160ff1916838001178555610d38565b82800160010185558215610d38579182015b82811115610d38578251825591602001919060010190610d1d565b5061091c9291505b8082111561091c5760008155600101610d40565b600060208284031215610d65578081fd5b81518015158114610c34578182fd5b600060208284031215610d85578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c34578182fd5b600060208284031215610dc5578081fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610c34578182fd5b600060208284031215610df9578081fd5b5035919050565b600060208284031215610e11578081fd5b5051919050565b60008060008060808587031215610e2d578283fd5b8435935060208086013567ffffffffffffffff80821115610e4c578586fd5b818801915088601f830112610e5f578586fd5b813581811115610e6d578687fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715610eaa578889fd5b60405281815283820185018b1015610ec0578788fd5b8185850186830137908101909301959095525093969395505050506040820135916060013590565b60008060408385031215610efa578182fd5b50508035926020909101359150565b60008151808452815b81811015610f2e57602081850181015186830182015201610f12565b81811115610f3f5782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600060208252610c346020830184610f09565b6000604082526110296040830185610f09565b90508260208301529392505050565b6020808252601a908201527f496e76616c696420696e697469616c2070657263656e74616765000000000000604082015260600190565b6020808252601b908201527f466565207479706520616c726561647920726567697374657265640000000000604082015260600190565b6020808252601e908201527f496e76616c6964206d6178696d756d206665652070657263656e746167650000604082015260600190565b60208082526015908201527f4e6f6e2d6578697374656e742066656520747970650000000000000000000000604082015260600190565b60208082526016908201527f496e76616c6964206665652070657263656e746167650000000000000000000060408201526060019056fea2646970667358221220a06535cf1546d0361023000fb397471f13455f4882a6cf20b130c33cc09726c264736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1887 CODESIZE SUB DUP1 PUSH3 0x1887 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x5A0 JUMP JUMPDEST ADDRESS PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xD2946C2B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0xD2946C2B SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 PUSH3 0xCA SWAP2 SWAP1 PUSH3 0x57A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP3 SWAP1 SHL AND PUSH1 0xC0 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH5 0x165A595B19 PUSH1 0xDA SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH3 0x10C SWAP1 PUSH1 0x2 SWAP1 DUP6 PUSH1 0x0 PUSH3 0x277 JUMP JUMPDEST PUSH3 0x157 PUSH1 0x3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x41737365747320556E646572204D616E6167656D656E74000000000000000000 DUP2 MSTORE POP DUP5 PUSH1 0x0 PUSH3 0x277 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH32 0xAD3228B676F7D3CD4284A5443F17F1962B36E491B30A40B2405849E597BA5FB5 DUP1 SLOAD PUSH1 0xFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x5377617 PUSH1 0xE4 SHL PUSH1 0x20 DUP3 DUP2 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP1 DUP1 MSTORE SWAP1 MSTORE SWAP1 MLOAD PUSH3 0x1DD SWAP2 PUSH32 0xAD3228B676F7D3CD4284A5443F17F1962B36E491B30A40B2405849E597BA5FB6 SWAP2 PUSH3 0x4E8 JUMP JUMPDEST POP PUSH32 0xADA5013122D395BA3C54772283FB069B10426056EF8CA54750CB9BB552A59E7D DUP1 SLOAD PUSH1 0xFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xA DUP2 MSTORE PUSH10 0x233630B9B4102637B0B7 PUSH1 0xB1 SHL PUSH1 0x20 DUP3 DUP2 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP1 MSTORE SWAP1 MLOAD PUSH3 0x26C SWAP2 PUSH32 0xADA5013122D395BA3C54772283FB069B10426056EF8CA54750CB9BB552A59E7E SWAP2 PUSH3 0x4E8 JUMP JUMPDEST POP POP POP POP POP PUSH3 0x6C4 JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH3 0x290 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP3 GT ISZERO JUMPDEST PUSH3 0x2B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2AF SWAP1 PUSH3 0x66E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0x2DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2AF SWAP1 PUSH3 0x637 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH3 0x2FC DUP4 PUSH3 0x43F PUSH1 0x20 SHL PUSH3 0x903 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x320 DUP5 PUSH3 0x43F PUSH1 0x20 SHL PUSH3 0x903 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP4 DUP5 ADD DUP9 SWAP1 MSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP1 DUP3 MSTORE DUP5 SWAP1 KECCAK256 DUP6 MLOAD DUP2 SLOAD DUP8 DUP5 ADD MLOAD SWAP7 DUP9 ADD MLOAD ISZERO ISZERO PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH1 0xFF PUSH1 0x80 SHL NOT SWAP8 DUP8 AND PUSH9 0x10000000000000000 MUL PUSH1 0x1 PUSH1 0x40 SHL PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP4 SWAP1 SWAP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 AND SWAP5 SWAP1 SWAP5 OR SWAP5 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 OR DUP4 SSTORE PUSH1 0x60 DUP5 ADD MLOAD DUP1 MLOAD PUSH3 0x3BF SWAP4 SWAP3 DUP6 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH3 0x4E8 JUMP JUMPDEST POP SWAP1 POP POP DUP4 PUSH32 0xE07086969B318280A21B104288D59A9C26C15CCDC203744DFE88E76B56810A76 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH3 0x3F7 SWAP3 SWAP2 SWAP1 PUSH3 0x5D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP4 PUSH32 0x34CD0FBE9E7D58E0835610336EDA810722864E47A9B1F5DC5C8F976C13C384D3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x431 SWAP2 SWAP1 PUSH3 0x6A5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x459 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT ISZERO PUSH2 0x1BA PUSH3 0x45D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP2 PUSH3 0x46E JUMPI PUSH3 0x46E DUP2 PUSH3 0x472 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH3 0x484 DUP2 PUSH3 0x109053 PUSH1 0xEA SHL PUSH3 0x487 JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x52B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x55B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x55B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x55B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x53E JUMP JUMPDEST POP PUSH3 0x459 SWAP3 SWAP2 POP JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x459 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x564 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x58C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x599 DUP2 PUSH3 0x6AE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x5B5 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 MLOAD PUSH3 0x5C2 DUP2 PUSH3 0x6AE JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD SWAP1 SWAP7 SWAP5 SWAP6 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 MSTORE DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x608 JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH3 0x5E9 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0x61A JUMPI DUP3 PUSH1 0x60 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH1 0x20 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD PUSH1 0x60 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420696E697469616C2070657263656E74616765000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206D6178696D756D206665652070657263656E746167650000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x1181 PUSH3 0x706 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1FC MSTORE DUP1 PUSH2 0x2AA MSTORE DUP1 PUSH2 0x3FA MSTORE DUP1 PUSH2 0x4AC MSTORE POP DUP1 PUSH2 0x752 MSTORE POP DUP1 PUSH2 0x6D9 MSTORE POP PUSH2 0x1181 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0xB661EDA1 EQ PUSH2 0x18A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x868897A0 EQ PUSH2 0x15A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x5E2CAE4C GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x5E2CAE4C EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x7268D6CE EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0x74735E0B EQ PUSH2 0x127 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x1A7C3263 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x4D44F0E9 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x1AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x330 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD6 PUSH2 0x10F CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x56D JUMP JUMPDEST PUSH2 0xFF PUSH2 0x122 CALLDATASIZE PUSH1 0x4 PUSH2 0xE18 JUMP JUMPDEST PUSH2 0x608 JUMP JUMPDEST PUSH2 0x13A PUSH2 0x135 CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xFA2 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x155 CALLDATASIZE PUSH1 0x4 PUSH2 0xD74 JUMP JUMPDEST PUSH2 0x6D5 JUMP JUMPDEST PUSH2 0x13A PUSH2 0x168 CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x727 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x750 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xFE2 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x774 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x800 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x1003 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1B6 DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x1F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x29F JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x274 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x298 SWAP2 SWAP1 PUSH2 0xE00 JUMP JUMPDEST SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH1 0x1 DUP4 EQ ISZERO PUSH2 0x30E JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD877845C 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 POP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x33A DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x370 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x378 PUSH2 0x920 JUMP JUMPDEST PUSH2 0x382 DUP4 DUP4 PUSH2 0x67F JUMP JUMPDEST PUSH2 0x3B8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x1114 JUMP JUMPDEST DUP3 PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD PUSH32 0x38E9922E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x38E9922E SWAP1 PUSH2 0x42F SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x530 JUMP JUMPDEST PUSH1 0x1 DUP4 EQ ISZERO PUSH2 0x4E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6B6B9F6900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6B6B9F69 SWAP1 PUSH2 0x42F SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xFAD JUMP JUMPDEST PUSH2 0x4EA DUP3 PUSH2 0x903 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP3 PUSH32 0x34CD0FBE9E7D58E0835610336EDA810722864E47A9B1F5DC5C8F976C13C384D3 DUP4 PUSH1 0x40 MLOAD PUSH2 0x560 SWAP2 SWAP1 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x579 DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x5AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST DUP3 PUSH2 0x5C4 JUMPI PUSH8 0x6F05B59D3B20000 SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH1 0x1 DUP4 EQ ISZERO PUSH2 0x5DC JUMPI PUSH7 0x2386F26FC10000 SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH2 0x610 PUSH2 0x920 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x66D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x106F JUMP JUMPDEST PUSH2 0x679 DUP5 DUP5 DUP5 DUP5 PUSH2 0x969 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x68B DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x6C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x6CA DUP5 PUSH2 0x56D JUMP JUMPDEST SWAP1 SWAP3 GT ISZERO SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x70A SWAP3 SWAP2 SWAP1 PUSH2 0xF72 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77E PUSH2 0x750 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x7FB SWAP2 SWAP1 PUSH2 0xDB4 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x80C DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x842 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 SWAP1 DUP2 ADD DUP1 SLOAD DUP5 MLOAD PUSH1 0x2 SWAP4 DUP3 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP4 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP4 DUP3 MSTORE SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x8F6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8CB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8F6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8D9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x91C PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x1BA PUSH2 0xB8C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x94F PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x6D5 JUMP JUMPDEST SWAP1 POP PUSH2 0x966 PUSH2 0x95E DUP3 CALLER PUSH2 0xB9E JUMP JUMPDEST PUSH2 0x191 PUSH2 0xB8C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x981 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP3 GT ISZERO JUMPDEST PUSH2 0x9B7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10A6 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x9F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x1038 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xA05 DUP4 PUSH2 0x903 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1D DUP5 PUSH2 0x903 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP4 DUP5 ADD DUP9 SWAP1 MSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP1 DUP3 MSTORE DUP5 SWAP1 KECCAK256 DUP6 MLOAD DUP2 SLOAD DUP8 DUP5 ADD MLOAD SWAP7 DUP9 ADD MLOAD ISZERO ISZERO PUSH17 0x100000000000000000000000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP8 DUP8 AND PUSH9 0x10000000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP8 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 AND SWAP5 SWAP1 SWAP5 OR SWAP5 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 OR DUP4 SSTORE PUSH1 0x60 DUP5 ADD MLOAD DUP1 MLOAD PUSH2 0xB10 SWAP4 SWAP3 DUP6 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH2 0xCCA JUMP JUMPDEST POP SWAP1 POP POP DUP4 PUSH32 0xE07086969B318280A21B104288D59A9C26C15CCDC203744DFE88E76B56810A76 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xB46 SWAP3 SWAP2 SWAP1 PUSH2 0x1016 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP4 PUSH32 0x34CD0FBE9E7D58E0835610336EDA810722864E47A9B1F5DC5C8F976C13C384D3 DUP3 PUSH1 0x40 MLOAD PUSH2 0xB7E SWAP2 SWAP1 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xB9A JUMPI PUSH2 0xB9A DUP2 PUSH2 0xC3B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBA8 PUSH2 0x774 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBE4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xFB6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xC34 SWAP2 SWAP1 PUSH2 0xD54 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x966 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xD0B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xD38 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xD38 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xD38 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xD1D JUMP JUMPDEST POP PUSH2 0x91C SWAP3 SWAP2 POP JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x91C JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xD40 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD65 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xC34 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD85 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0xC34 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDC5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xC34 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDF9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE11 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xE2D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP1 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE4C JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE5F JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xE6D JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0xEAA JUMPI DUP9 DUP10 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP12 LT ISZERO PUSH2 0xEC0 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD SWAP1 SWAP4 ADD SWAP6 SWAP1 SWAP6 MSTORE POP SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEFA JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xF2E JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0xF12 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xF3F JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0xC34 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 MSTORE PUSH2 0x1029 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xF09 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420696E697469616C2070657263656E74616765000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x466565207479706520616C726561647920726567697374657265640000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206D6178696D756D206665652070657263656E746167650000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F6E2D6578697374656E742066656520747970650000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206665652070657263656E7461676500000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG0 PUSH6 0x35CF1546D036 LT 0x23 STOP 0xF 0xB3 SWAP8 SELFBALANCE 0x1F SGT GASLIMIT 0x5F 0x48 DUP3 0xA6 0xCF KECCAK256 0xB1 ADDRESS 0xC3 EXTCODECOPY 0xC0 SWAP8 0x26 0xC2 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1101:5324:65:-:0;;;1880:1232;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1143:4:43;2049:46:39;;-1:-1:-1;;;;;;1162:14:43::1;::::0;;;;::::1;::::0;2067:32:65::1;::::0;;-1:-1:-1;;;2067:32:65;;;;1119:31:43;;-1:-1:-1;;;;;1162:14:43;::::1;::::0;2067:30:65::1;::::0;:32:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;1162:14:43;2067:32:65;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;2109:45:65::1;::::0;;;;::::1;::::0;2329:66:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;2329:66:65::1;::::0;::::1;::::0;2021:78;;-1:-1:-1;2329:66:65::1;::::0;4446:1:27::1;::::0;2378:13:65;-1:-1:-1;2329:16:65::1;:66::i;:::-;2405:80;4485:1:27;2405:80:65;;;;;;;;;;;;;;;;::::0;2470:11:::1;2483:1;2405:16;;;:80;;:::i;:::-;2856:34:::0;:52;;-1:-1:-1;;;;2856:52:65::1;-1:-1:-1::0;;;2856:52:65::1;::::0;;:34;2918:48;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;2856:34:65::1;2918:48:::0;;::::1;::::0;;;2856:12:::1;2918:34:::0;;;;;:48;;::::1;::::0;:39;;:48:::1;:::i;:::-;-1:-1:-1::0;2977:40:65;:58;;-1:-1:-1;;;;2977:58:65::1;-1:-1:-1::0;;;2977:58:65::1;::::0;;:40;3045:60;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;2977:40:65::1;3045:60:::0;;::::1;::::0;;;3031:4:::1;2977:12;3045:40:::0;;;;;:60;;::::1;::::0;:45;;:60:::1;:::i;:::-;;1880:1232;::::0;;;1101:5324;;3592:696;3779:1;3764:12;:16;3763:68;;;;;1647:4;3786:12;:44;;3763:68;3755:111;;;;-1:-1:-1;;;3755:111:65;;;;;;;:::i;:::-;;;;;;;;;3900:12;3884;:28;;3876:67;;;;-1:-1:-1;;;3876:67:65;;;;;;;:::i;:::-;3978:167;;;;;;;;4111:23;:12;:21;;;;;:23;;:::i;:::-;-1:-1:-1;;;;;3978:167:65;;;;;4067:23;:12;:21;;;;;:23;;:::i;:::-;-1:-1:-1;;;;;3978:167:65;;;;;4016:4;3978:167;;;;;;;;;;;;;;;3954:21;;;;;;;;;:191;;;;;;;;;;;;;;-1:-1:-1;;;3954:191:65;-1:-1:-1;;;;3954:191:65;;;;;-1:-1:-1;;;;;;;;3954:191:65;;;;-1:-1:-1;;;;;;3954:191:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;4187:7;4161:54;4196:4;4202:12;4161:54;;;;;;;:::i;:::-;;;;;;;;4259:7;4230:51;4268:12;4230:51;;;;;;:::i;:::-;;;;;;;;3592:696;;;;:::o;1410:186:55:-;1466:6;1484:75;-1:-1:-1;;;;;1493:25:55;;;12403:3:14;1484:8:55;:75::i;:::-;-1:-1:-1;1583:5:55;1410:186::o;918:101:14:-;987:9;982:34;;998:18;1006:9;998:7;:18::i;:::-;918:101;;:::o;1437:126::-;1484:28;1492:9;-1:-1:-1;;;1484:7:14;:28::i;:::-;1437:126;:::o;1670:3378::-;-1:-1:-1;;;1732:18:14;4383:79;;;4601:66;4595:4;4588:80;4743:1;4737:4;4730:15;2871:2;2904:18;;;2949;;;2876:4;2945:29;;;3747:1;3838:14;2856:18;;;;3827:26;;;;2997:18;;;;3044;;;3040:29;;3859:2;3855:17;3823:50;3737:4;3743:18;;;;;;3733:29;3729:2;3725:38;3802:72;;;;3797:3;3793:82;4810:4;4803:26;1761:14;;;;;5036:3;;5026:14;1101:5324:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1101:5324:65;;;-1:-1:-1;1101:5324:65;;;;;;;;;;;;;;520:325:-1;;666:2;654:9;645:7;641:23;637:32;634:2;;;-1:-1;;672:12;634:2;120:6;114:13;132:64;190:5;132:64;:::i;:::-;724:105;628:217;-1:-1;;;628:217::o;852:565::-;;;;1016:2;1004:9;995:7;991:23;987:32;984:2;;;-1:-1;;1022:12;984:2;307:6;301:13;319:48;361:5;319:48;:::i;:::-;1200:2;1250:22;;457:13;1319:2;1369:22;;;457:13;1074:89;;457:13;;-1:-1;457:13;978:439;-1:-1;;;978:439::o;2572:421::-;;2747:2;2768:17;2761:47;1569:5;4163:12;4320:6;2747:2;2736:9;2732:18;4308:19;-1:-1;4996:101;5010:6;5007:1;5004:13;4996:101;;;4357:4;5077:11;;;;;5071:18;4348:14;5058:11;;;;5051:39;5025:10;4996:101;;;5112:6;5109:1;5106:13;5103:2;;;-1:-1;4348:14;5168:6;2736:9;5159:16;;5152:27;5103:2;-1:-1;4357:4;2964:18;;2523:37;;;;-1:-1;5284:7;5268:14;;;;-1:-1;;5264:28;1727:39;4348:14;1727:39;;2718:275;-1:-1;2718:275::o;3000:416::-;3200:2;3214:47;;;2003:2;3185:18;;;4308:19;2039:28;4348:14;;;2019:49;2087:12;;;3171:245::o;3423:416::-;3623:2;3637:47;;;2338:2;3608:18;;;4308:19;2374:32;4348:14;;;2354:53;2426:12;;;3594:245::o;3846:222::-;2523:37;;;3973:2;3958:18;;3944:124::o;5305:179::-;-1:-1;;;;;4778:54;;5395:66;;5385:2;;5475:1;;5465:12;5379:105;1101:5324:65;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3380":[{"length":32,"start":1753}],"4027":[{"length":32,"start":1874}],"8693":[{"length":32,"start":508},{"length":32,"start":682},{"length":32,"start":1018},{"length":32,"start":1196}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100be5760003560e01c8063851c1bb3116100765780638d928af81161005b5780638d928af81461016d578063aaabadc514610182578063b661eda11461018a576100be565b8063851c1bb314610147578063868897a01461015a576100be565b80635e2cae4c116100a75780635e2cae4c146101015780637268d6ce1461011457806374735e0b14610127576100be565b80631a7c3263146100c35780634d44f0e9146100ec575b600080fd5b6100d66100d1366004610de8565b6101aa565b6040516100e39190610fad565b60405180910390f35b6100ff6100fa366004610ee8565b610330565b005b6100d661010f366004610de8565b61056d565b6100ff610122366004610e18565b610608565b61013a610135366004610ee8565b61067f565b6040516100e39190610fa2565b6100d6610155366004610d74565b6106d5565b61013a610168366004610de8565b610727565b610175610750565b6040516100e39190610fe2565b610175610774565b61019d610198366004610de8565b610800565b6040516100e39190611003565b6000816101b681610727565b6101f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b60405180910390fd5b8261029f577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b15801561026057600080fd5b505afa158015610274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102989190610e00565b915061032a565b600183141561030e577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d877845c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561026057600080fd5b60008381526020819052604090205467ffffffffffffffff1691505b50919050565b8161033a81610727565b610370576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b610378610920565b610382838361067f565b6103b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec90611114565b82610466576040517f38e9922e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906338e9922e9061042f908590600401610fad565b600060405180830381600087803b15801561044957600080fd5b505af115801561045d573d6000803e3d6000fd5b50505050610530565b60018314156104e1576040517f6b6b9f6900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636b6b9f699061042f908590600401610fad565b6104ea82610903565b600084815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff929092169190911790555b827f34cd0fbe9e7d58e0835610336eda810722864e47a9b1f5dc5c8f976c13c384d3836040516105609190610fad565b60405180910390a2505050565b60008161057981610727565b6105af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b826105c4576706f05b59d3b20000915061032a565b60018314156105dc57662386f26fc10000915061032a565b60008381526020819052604090205468010000000000000000900467ffffffffffffffff16915061032a565b610610610920565b600084815260208190526040902054700100000000000000000000000000000000900460ff161561066d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec9061106f565b61067984848484610969565b50505050565b60008261068b81610727565b6106c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b6106ca8461056d565b909211159392505050565b60007f00000000000000000000000000000000000000000000000000000000000000008260405160200161070a929190610f72565b604051602081830303815290604052805190602001209050919050565b600090815260208190526040902054700100000000000000000000000000000000900460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061077e610750565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156107c357600080fd5b505afa1580156107d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fb9190610db4565b905090565b60608161080c81610727565b610842576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b60008381526020818152604091829020600190810180548451600293821615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911692909204601f8101849004840283018401909452838252909290918301828280156108f65780601f106108cb576101008083540402835291602001916108f6565b820191906000526020600020905b8154815290600101906020018083116108d957829003601f168201915b5050505050915050919050565b600061091c67ffffffffffffffff8311156101ba610b8c565b5090565b600061094f6000357fffffffff00000000000000000000000000000000000000000000000000000000166106d5565b905061096661095e8233610b9e565b610191610b8c565b50565b6000821180156109815750670de0b6b3a76400008211155b6109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110a6565b818111156109f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec90611038565b6040518060800160405280610a0583610903565b67ffffffffffffffff168152602001610a1d84610903565b67ffffffffffffffff908116825260016020808401829052604093840188905260008981528082528490208551815487840151968801511515700100000000000000000000000000000000027fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff97871668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff939097167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009092169190911791909116949094179490941692909217835560608401518051610b1093928501929190910190610cca565b50905050837fe07086969b318280a21b104288d59a9c26c15ccdc203744dfe88e76b56810a768484604051610b46929190611016565b60405180910390a2837f34cd0fbe9e7d58e0835610336eda810722864e47a9b1f5dc5c8f976c13c384d382604051610b7e9190610fad565b60405180910390a250505050565b81610b9a57610b9a81610c3b565b5050565b6000610ba8610774565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401610be493929190610fb6565b60206040518083038186803b158015610bfc57600080fd5b505afa158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c349190610d54565b9392505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610966917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610d0b57805160ff1916838001178555610d38565b82800160010185558215610d38579182015b82811115610d38578251825591602001919060010190610d1d565b5061091c9291505b8082111561091c5760008155600101610d40565b600060208284031215610d65578081fd5b81518015158114610c34578182fd5b600060208284031215610d85578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c34578182fd5b600060208284031215610dc5578081fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610c34578182fd5b600060208284031215610df9578081fd5b5035919050565b600060208284031215610e11578081fd5b5051919050565b60008060008060808587031215610e2d578283fd5b8435935060208086013567ffffffffffffffff80821115610e4c578586fd5b818801915088601f830112610e5f578586fd5b813581811115610e6d578687fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715610eaa578889fd5b60405281815283820185018b1015610ec0578788fd5b8185850186830137908101909301959095525093969395505050506040820135916060013590565b60008060408385031215610efa578182fd5b50508035926020909101359150565b60008151808452815b81811015610f2e57602081850181015186830182015201610f12565b81811115610f3f5782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600060208252610c346020830184610f09565b6000604082526110296040830185610f09565b90508260208301529392505050565b6020808252601a908201527f496e76616c696420696e697469616c2070657263656e74616765000000000000604082015260600190565b6020808252601b908201527f466565207479706520616c726561647920726567697374657265640000000000604082015260600190565b6020808252601e908201527f496e76616c6964206d6178696d756d206665652070657263656e746167650000604082015260600190565b60208082526015908201527f4e6f6e2d6578697374656e742066656520747970650000000000000000000000604082015260600190565b60208082526016908201527f496e76616c6964206665652070657263656e746167650000000000000000000060408201526060019056fea2646970667358221220a06535cf1546d0361023000fb397471f13455f4882a6cf20b130c33cc09726c264736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0xB661EDA1 EQ PUSH2 0x18A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x868897A0 EQ PUSH2 0x15A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x5E2CAE4C GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x5E2CAE4C EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x7268D6CE EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0x74735E0B EQ PUSH2 0x127 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x1A7C3263 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x4D44F0E9 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x1AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x330 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD6 PUSH2 0x10F CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x56D JUMP JUMPDEST PUSH2 0xFF PUSH2 0x122 CALLDATASIZE PUSH1 0x4 PUSH2 0xE18 JUMP JUMPDEST PUSH2 0x608 JUMP JUMPDEST PUSH2 0x13A PUSH2 0x135 CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xFA2 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x155 CALLDATASIZE PUSH1 0x4 PUSH2 0xD74 JUMP JUMPDEST PUSH2 0x6D5 JUMP JUMPDEST PUSH2 0x13A PUSH2 0x168 CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x727 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x750 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xFE2 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x774 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x800 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x1003 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1B6 DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x1F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x29F JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x274 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x298 SWAP2 SWAP1 PUSH2 0xE00 JUMP JUMPDEST SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH1 0x1 DUP4 EQ ISZERO PUSH2 0x30E JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD877845C 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 POP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x33A DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x370 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x378 PUSH2 0x920 JUMP JUMPDEST PUSH2 0x382 DUP4 DUP4 PUSH2 0x67F JUMP JUMPDEST PUSH2 0x3B8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x1114 JUMP JUMPDEST DUP3 PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD PUSH32 0x38E9922E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x38E9922E SWAP1 PUSH2 0x42F SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x530 JUMP JUMPDEST PUSH1 0x1 DUP4 EQ ISZERO PUSH2 0x4E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6B6B9F6900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6B6B9F69 SWAP1 PUSH2 0x42F SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xFAD JUMP JUMPDEST PUSH2 0x4EA DUP3 PUSH2 0x903 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP3 PUSH32 0x34CD0FBE9E7D58E0835610336EDA810722864E47A9B1F5DC5C8F976C13C384D3 DUP4 PUSH1 0x40 MLOAD PUSH2 0x560 SWAP2 SWAP1 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x579 DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x5AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST DUP3 PUSH2 0x5C4 JUMPI PUSH8 0x6F05B59D3B20000 SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH1 0x1 DUP4 EQ ISZERO PUSH2 0x5DC JUMPI PUSH7 0x2386F26FC10000 SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH2 0x610 PUSH2 0x920 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x66D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x106F JUMP JUMPDEST PUSH2 0x679 DUP5 DUP5 DUP5 DUP5 PUSH2 0x969 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x68B DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x6C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x6CA DUP5 PUSH2 0x56D JUMP JUMPDEST SWAP1 SWAP3 GT ISZERO SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x70A SWAP3 SWAP2 SWAP1 PUSH2 0xF72 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77E PUSH2 0x750 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x7FB SWAP2 SWAP1 PUSH2 0xDB4 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x80C DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x842 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 SWAP1 DUP2 ADD DUP1 SLOAD DUP5 MLOAD PUSH1 0x2 SWAP4 DUP3 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP4 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP4 DUP3 MSTORE SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x8F6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8CB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8F6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8D9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x91C PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x1BA PUSH2 0xB8C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x94F PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x6D5 JUMP JUMPDEST SWAP1 POP PUSH2 0x966 PUSH2 0x95E DUP3 CALLER PUSH2 0xB9E JUMP JUMPDEST PUSH2 0x191 PUSH2 0xB8C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x981 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP3 GT ISZERO JUMPDEST PUSH2 0x9B7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10A6 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x9F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x1038 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xA05 DUP4 PUSH2 0x903 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1D DUP5 PUSH2 0x903 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP4 DUP5 ADD DUP9 SWAP1 MSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP1 DUP3 MSTORE DUP5 SWAP1 KECCAK256 DUP6 MLOAD DUP2 SLOAD DUP8 DUP5 ADD MLOAD SWAP7 DUP9 ADD MLOAD ISZERO ISZERO PUSH17 0x100000000000000000000000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP8 DUP8 AND PUSH9 0x10000000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP8 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 AND SWAP5 SWAP1 SWAP5 OR SWAP5 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 OR DUP4 SSTORE PUSH1 0x60 DUP5 ADD MLOAD DUP1 MLOAD PUSH2 0xB10 SWAP4 SWAP3 DUP6 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH2 0xCCA JUMP JUMPDEST POP SWAP1 POP POP DUP4 PUSH32 0xE07086969B318280A21B104288D59A9C26C15CCDC203744DFE88E76B56810A76 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xB46 SWAP3 SWAP2 SWAP1 PUSH2 0x1016 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP4 PUSH32 0x34CD0FBE9E7D58E0835610336EDA810722864E47A9B1F5DC5C8F976C13C384D3 DUP3 PUSH1 0x40 MLOAD PUSH2 0xB7E SWAP2 SWAP1 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xB9A JUMPI PUSH2 0xB9A DUP2 PUSH2 0xC3B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBA8 PUSH2 0x774 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBE4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xFB6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xC34 SWAP2 SWAP1 PUSH2 0xD54 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x966 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xD0B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xD38 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xD38 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xD38 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xD1D JUMP JUMPDEST POP PUSH2 0x91C SWAP3 SWAP2 POP JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x91C JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xD40 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD65 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xC34 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD85 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0xC34 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDC5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xC34 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDF9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE11 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xE2D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP1 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE4C JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE5F JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xE6D JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0xEAA JUMPI DUP9 DUP10 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP12 LT ISZERO PUSH2 0xEC0 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD SWAP1 SWAP4 ADD SWAP6 SWAP1 SWAP6 MSTORE POP SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEFA JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xF2E JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0xF12 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xF3F JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0xC34 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 MSTORE PUSH2 0x1029 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xF09 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420696E697469616C2070657263656E74616765000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x466565207479706520616C726561647920726567697374657265640000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206D6178696D756D206665652070657263656E746167650000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F6E2D6578697374656E742066656520747970650000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206665652070657263656E7461676500000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG0 PUSH6 0x35CF1546D036 LT 0x23 STOP 0xF 0xB3 SWAP8 SELFBALANCE 0x1F SGT GASLIMIT 0x5F 0x48 DUP3 0xA6 0xCF KECCAK256 0xB1 ADDRESS 0xC3 EXTCODECOPY 0xC0 SWAP8 0x26 0xC2 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1101:5324:65:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5339:440;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4680:653;;;;;;:::i;:::-;;:::i;:::-;;5785:468;;;;;;:::i;:::-;;:::i;3252:334::-;;;;;;:::i;:::-;;:::i;4433:241::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2607:430:39:-;;;;;;:::i;:::-;;:::i;4294:133:65:-;;;;;;:::i;:::-;;:::i;1247:79:43:-;;;:::i;:::-;;;;;;;:::i;1386:109::-;;;:::i;6259:164:65:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5339:440::-;5444:7;5426;3179:23;3194:7;3179:14;:23::i;:::-;3171:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;5467:31;5463:310:::1;;5521:22;:43;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5514:52;;;;5463:310;4405:1:27;5587:7:65;:37;5583:190;;;5647:22;:48;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;5583:190;5735:12;:21:::0;;;::::1;::::0;;;;;;:27;::::1;;::::0;-1:-1:-1;5583:190:65::1;5339:440:::0;;;;:::o;4680:653::-;4804:7;3179:23;3194:7;3179:14;:23::i;:::-;3171:57;;;;;;;;;;;;:::i;:::-;2276:21:39::1;:19;:21::i;:::-;4856:43:65::2;4881:7;4890:8;4856:24;:43::i;:::-;4848:78;;;;;;;;;;;;:::i;:::-;4941:31:::0;4937:327:::2;;4988:53;::::0;;;;:43:::2;:22;:43;::::0;::::2;::::0;:53:::2;::::0;5032:8;;4988:53:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;4937:327;;;4405:1:27;5062:7:65;:37;5058:206;;;5115:58;::::0;;;;:48:::2;:22;:48;::::0;::::2;::::0;:58:::2;::::0;5164:8;;5115:58:::2;;;:::i;5058:206::-;5234:19;:8;:17;:19::i;:::-;5204:12;:21:::0;;;::::2;::::0;;;;;;:49;;;::::2;;::::0;;;::::2;::::0;;;::::2;::::0;;5058:206:::2;5308:7;5279:47;5317:8;5279:47;;;;;;:::i;:::-;;;;;;;;4680:653:::0;;;:::o;5785:468::-;5935:7;5909;3179:23;3194:7;3179:14;:23::i;:::-;3171:57;;;;;;;;;;;;:::i;:::-;5962:31;5958:289:::1;;1778:5;6009:40;;;;5958:289;4405:1:27;6070:7:65;:37;6066:181;;;1863:4;6123:46;;;;6066:181;6207:12;:21:::0;;;::::1;::::0;;;;;;:29;;;::::1;;;::::0;-1:-1:-1;6200:36:65::1;;3252:334:::0;2276:21:39;:19;:21::i;:::-;3446:12:65::1;:21:::0;;;::::1;::::0;;;;;;:32;;;::::1;;;3445:33;3437:73;;;;;;;;;;;;:::i;:::-;3520:59;3537:7;3546:4;3552:12;3566;3520:16;:59::i;:::-;3252:334:::0;;;;:::o;4433:241::-;4595:4;4569:7;3179:23;3194:7;3179:14;:23::i;:::-;3171:57;;;;;;;;;;;;:::i;:::-;4631:36:::1;4659:7;4631:27;:36::i;:::-;4622:45:::0;;::::1;;::::0;4433:241;-1:-1:-1;;;4433:241:65:o;2607:430:39:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;:::o;4294:133:65:-;4365:4;4388:21;;;;;;;;;;:32;;;;;;;4294:133::o;1247:79:43:-;1313:6;1247:79;:::o;1386:109::-;1432:11;1462:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1455:33;;1386:109;:::o;6259:164:65:-;6358:13;6340:7;3179:23;3194:7;3179:14;:23::i;:::-;3171:57;;;;;;;;;;;;:::i;:::-;6390:12:::1;:21:::0;;;::::1;::::0;;;;;;;;:26:::1;::::0;;::::1;6383:33:::0;;;;::::1;::::0;;::::1;;;;::::0;;;;::::1;::::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;6390:26;;6383:33;::::1;6390:26:::0;6383:33;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6259:164:::0;;;;:::o;1410:186:55:-;1466:6;1484:75;1502:16;1493:25;;;12403:3:14;1484:8:55;:75::i;:::-;-1:-1:-1;1583:5:55;1410:186::o;2420:181:39:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;9891:3:14;2524:8:39;:70::i;:::-;2420:181;:::o;3592:696:65:-;3779:1;3764:12;:16;3763:68;;;;;1647:4;3786:12;:44;;3763:68;3755:111;;;;;;;;;;;;:::i;:::-;3900:12;3884;:28;;3876:67;;;;;;;;;;;;:::i;:::-;3978:167;;;;;;;;4111:23;:12;:21;:23::i;:::-;3978:167;;;;;;4067:23;:12;:21;:23::i;:::-;3978:167;;;;;;4016:4;3978:167;;;;;;;;;;;;;;;3954:21;;;;;;;;;:191;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;4187:7;4161:54;4196:4;4202:12;4161:54;;;;;;;:::i;:::-;;;;;;;;4259:7;4230:51;4268:12;4230:51;;;;;;:::i;:::-;;;;;;;;3592:696;;;;:::o;918:101:14:-;987:9;982:34;;998:18;1006:9;998:7;:18::i;:::-;918:101;;:::o;1501:178:43:-;1589:4;1612:15;:13;:15::i;:::-;:26;;;1639:8;1649:7;1666:4;1612:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1605:67;1501:178;-1:-1:-1;;;1501:178:43:o;1437:126:14:-;4395:66;1732:18;4383:79;;;4601:66;4595:4;4588:80;4743:1;4737:4;4730:15;2871:2;2904:18;;;2949;;;2876:4;2945:29;;;3747:1;3838:14;2856:18;;;3827:26;2997:18;;;;3044;;;3040:29;3859:2;3855:17;3823:50;3802:72;;3797:3;3793:82;4810:4;4803:26;1484:28;;;;1761:14;;5036:3;;5026:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1185:257;;1297:2;1285:9;1276:7;1272:23;1268:32;1265:2;;;-1:-1;;1303:12;1265:2;86:6;80:13;14687:5;12737:13;12730:21;14665:5;14662:32;14652:2;;-1:-1;;14698:12;1449:239;;1552:2;1540:9;1531:7;1527:23;1523:32;1520:2;;;-1:-1;;1558:12;1520:2;219:6;206:20;12914:66;14809:5;12903:78;14785:5;14782:34;14772:2;;-1:-1;;14820:12;1695:303;;1830:2;1818:9;1809:7;1805:23;1801:32;1798:2;;;-1:-1;;1836:12;1798:2;379:6;373:13;13184:42;14973:5;13173:54;14928:5;14925:55;14915:2;;-1:-1;;14984:12;2005:241;;2109:2;2097:9;2088:7;2084:23;2080:32;2077:2;;;-1:-1;;2115:12;2077:2;-1:-1;974:20;;2071:175;-1:-1;2071:175::o;2253:263::-;;2368:2;2356:9;2347:7;2343:23;2339:32;2336:2;;;-1:-1;;2374:12;2336:2;-1:-1;1122:13;;2330:186;-1:-1;2330:186::o;2523:723::-;;;;;2688:3;2676:9;2667:7;2663:23;2659:33;2656:2;;;-1:-1;;2695:12;2656:2;987:6;974:20;2747:63;;2875:2;;2864:9;2860:18;2847:32;2899:18;;2891:6;2888:30;2885:2;;;-1:-1;;2921:12;2885:2;2997:6;2986:9;2982:22;;;559:3;552:4;544:6;540:17;536:27;526:2;;-1:-1;;567:12;526:2;614:6;601:20;2899:18;12079:6;12076:30;12073:2;;;-1:-1;;12109:12;12073:2;11742;11736:9;2875:2;12182:9;552:4;12167:6;12163:17;12159:33;11772:6;11768:17;;11879:6;11867:10;11864:22;2899:18;11831:10;11828:34;11825:62;11822:2;;;-1:-1;;11890:12;11822:2;11742;11909:22;707:21;;;807:16;;;;;804:25;-1:-1;801:2;;;-1:-1;;832:12;801:2;13991:6;2875:2;749:6;745:17;2875:2;783:5;779:16;13968:30;14029:16;;;;;;14022:27;;;;-1:-1;2650:596;;783:5;;-1:-1;;;;11742:2;3090:22;;974:20;;3159:2;3198:22;974:20;;2650:596::o;3253:366::-;;;3374:2;3362:9;3353:7;3349:23;3345:32;3342:2;;;-1:-1;;3380:12;3342:2;-1:-1;;974:20;;;3532:2;3571:22;;;974:20;;-1:-1;3336:283::o;4627:347::-;;4772:5;12360:12;12517:6;12512:3;12505:19;-1:-1;14136:101;14150:6;14147:1;14144:13;14136:101;;;12554:4;14217:11;;;;;14211:18;14198:11;;;;;14191:39;14165:10;14136:101;;;14252:6;14249:1;14246:13;14243:2;;;-1:-1;12554:4;14308:6;12549:3;14299:16;;14292:27;14243:2;-1:-1;14589:2;14569:14;14585:7;14565:28;4930:39;;;;12554:4;4930:39;;4719:255;-1:-1;;4719:255::o;6772:387::-;3928:37;;;12914:66;12903:78;7023:2;7014:12;;4223:56;7123:11;;;6914:245::o;7166:210::-;12737:13;;12730:21;3811:34;;7287:2;7272:18;;7258:118::o;7383:222::-;3928:37;;;7510:2;7495:18;;7481:124::o;7612:444::-;3928:37;;;13184:42;13173:54;;;7959:2;7944:18;;3697:37;13173:54;8042:2;8027:18;;3697:37;7795:2;7780:18;;7766:290::o;8063:262::-;13184:42;13173:54;;;;4382:70;;8210:2;8195:18;;8181:144::o;8591:310::-;;8738:2;8759:17;8752:47;8813:78;8738:2;8727:9;8723:18;8877:6;8813:78;:::i;8908:421::-;;9083:2;9104:17;9097:47;9158:78;9083:2;9072:9;9068:18;9222:6;9158:78;:::i;:::-;9150:86;;3958:5;9315:2;9304:9;9300:18;3928:37;9054:275;;;;;:::o;9336:416::-;9536:2;9550:47;;;5206:2;9521:18;;;12505:19;5242:28;12545:14;;;5222:49;5290:12;;;9507:245::o;9759:416::-;9959:2;9973:47;;;5541:2;9944:18;;;12505:19;5577:29;12545:14;;;5557:50;5626:12;;;9930:245::o;10182:416::-;10382:2;10396:47;;;5877:2;10367:18;;;12505:19;5913:32;12545:14;;;5893:53;5965:12;;;10353:245::o;10605:416::-;10805:2;10819:47;;;6216:2;10790:18;;;12505:19;6252:23;12545:14;;;6232:44;6295:12;;;10776:245::o;11028:416::-;11228:2;11242:47;;;6546:2;11213:18;;;12505:19;6582:24;12545:14;;;6562:45;6626:12;;;11199:245::o"},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getFeeTypeMaximumPercentage(uint256)":"5e2cae4c","getFeeTypeName(uint256)":"b661eda1","getFeeTypePercentage(uint256)":"1a7c3263","getVault()":"8d928af8","isValidFeeType(uint256)":"868897a0","isValidFeeTypePercentage(uint256,uint256)":"74735e0b","registerFeeType(uint256,string,uint256,uint256)":"7268d6ce","setFeeTypePercentage(uint256,uint256)":"4d44f0e9"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxYieldValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAUMValue\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"percentage\",\"type\":\"uint256\"}],\"name\":\"ProtocolFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maximumPercentage\",\"type\":\"uint256\"}],\"name\":\"ProtocolFeeTypeRegistered\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"getFeeTypeMaximumPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"getFeeTypeName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"getFeeTypePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"isValidFeeType\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"isValidFeeTypePercentage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"maximumValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialValue\",\"type\":\"uint256\"}],\"name\":\"registerFeeType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"setFeeTypePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getFeeTypeMaximumPercentage(uint256)\":{\"details\":\"Returns `feeType`'s maximum value.\"},\"getFeeTypeName(uint256)\":{\"details\":\"Returns `feeType`'s name.\"},\"getFeeTypePercentage(uint256)\":{\"details\":\"Returns the current percentage value for `feeType`. This is the preferred mechanism for querying these - whenever possible, use this fucntion instead of e.g. querying the ProtocolFeesCollector.\"},\"isValidFeeType(uint256)\":{\"details\":\"Returns true if `feeType` has been registered and can be queried.\"},\"isValidFeeTypePercentage(uint256,uint256)\":{\"details\":\"Returns true if `value` is a valid percentage value for `feeType`.\"},\"registerFeeType(uint256,string,uint256,uint256)\":{\"details\":\"Registers a new fee type in the system, making it queryable via `getFeeTypePercentage` and `getFeeTypeName`, as well as configurable via `setFeeTypePercentage`. `feeType` can be any arbitrary value (that is not in use). It is not possible to de-register fee types, nor change their name or maximum value.\"},\"setFeeTypePercentage(uint256,uint256)\":{\"details\":\"Sets the percentage value for `feeType` to `newValue`. IMPORTANT: it is possible for a third party to modify the SWAP and FLASH_LOAN fee type values directly in the ProtocolFeesCollector, without invoking this function. This will result in the `ProtocolFeePercentageChanged` event not being emitted despite their value changing. Such usage of the ProtocolFeesCollector is however discouraged: only this contract should be granted permission to call `setSwapFeePercentage` and `setFlashLoanFeePercentage`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ProtocolFeePercentagesProvider.sol\":\"ProtocolFeePercentagesProvider\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0x1e5bca6b4fb897adc2458f65aa7abed8499dcf146ac5872c62544d91516867cb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faa81254fe029b7ccd05635d6919da30bcb2114026996d10f6b51fc0e1f5b850\",\"dweb:/ipfs/Qmax3d2kq51xjt6hjYgskuXSrsB3fBZ4LAxBPRDDzbg8XD\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\":{\"keccak256\":\"0xf6fd47a273c8f275d115dac4d216acffd976573410a5f92e2dd8c1125ce3b134\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://41febf9d4bc242065cb96d9d1258e926bf1b4f4c36131964cbf0b4cdd5ce1f99\",\"dweb:/ipfs/QmbKk893VkGw3w49xWyQS8ehqdXxbL4sqNW6TcWMXRpnGu\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0x6c48b193602f6d6407e8fca3389fb32264a91f1de8ec33db209694e3bf9d0d13\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1fa358f1537907cdd9f6b176f5a1effbbe9925429634038e9c533493ed824cab\",\"dweb:/ipfs/QmW1EcMLkMFuDKrPwWJ2qhBkmVzAUTVEMP75kw7D8XTjJf\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol\":{\"keccak256\":\"0x900f61d39cfbb66db432105fdd524892b4d36fd57021231a7a011ecf2e06d848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9853feb7f6ea54eed91e45cc9f833062a768365295c64867ac7e83926cb3a25\",\"dweb:/ipfs/Qmeo7jrEjenzBXQ8pSDj76CqVwHg9rhRZKiPfDpLuHk42Q\"]},\"contracts/ProtocolFeePercentagesProvider.sol\":{\"keccak256\":\"0x7222bf213cd467658150c021177a7941ad27f724d44998c89015345313a743d5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1aa0e05ff305b8de694a87b6c65ba091e499dce6e818cd6d769fbd5393f4387a\",\"dweb:/ipfs/QmQ9PuDt1crwUMJDuuhkuXZwid2t2yKfB8xm5uZdgkgdrQ\"]}},\"version\":1}"}},"contracts/ProtocolFeesWithdrawer.sol":{"ProtocolFeesWithdrawer":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IERC20[]","name":"initialDeniedTokens","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenAllowlisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenDenylisted","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"allowlistToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"denylistToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getDenylistedToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDenylistedTokensLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeesCollector","outputs":[{"internalType":"contract IProtocolFeesCollector","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"isWithdrawableToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"isWithdrawableTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawCollectedFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e06040523480156200001157600080fd5b506040516200106438038062001064833981810160405260408110156200003757600080fd5b8151602083018051604051929492938301929190846401000000008211156200005f57600080fd5b9083019060208201858111156200007557600080fd5b82518660208202830111640100000000821117156200009357600080fd5b82525081516020918201928201910280838360005b83811015620000c2578181015183820152602001620000a8565b50505050919091016040818152306080526001600160601b0319606089901b1660a05263d2946c2b60e01b8252516001600160a01b038816955063d2946c2b945060048083019450602093509091829003018186803b1580156200012557600080fd5b505afa1580156200013a573d6000803e3d6000fd5b505050506040513d60208110156200015157600080fd5b505160601b6001600160601b03191660c052805160005b818110156200019f57620001968382815181106200018257fe5b6020026020010151620001a960201b60201c565b60010162000168565b50505050620002df565b620001c48160006200025560201b620007b91790919060201c565b62000216576040805162461bcd60e51b815260206004820152601860248201527f546f6b656e20616c72656164792064656e796c69737465640000000000000000604482015290519081900360640190fd5b604080516001600160a01b038316815290517ff1a0f8a2f72d5da4064fe8bb9f78d485b757edfbd004465e56f102f2b8ab6edb9181900360200190a150565b6000620002638383620002be565b620002b457508154600180820184556000848152602080822090930180546001600160a01b0319166001600160a01b03861690811790915585549082528286019093526040902091909155620002b8565b5060005b92915050565b6001600160a01b031660009081526001919091016020526040902054151590565b60805160a05160601c60c05160601c610d4d62000317600039806103f952806106c152508061059752508061052a5250610d4d6000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c8063a21dfaee11610081578063d2946c2b1161005b578063d2946c2b14610324578063de0b27c91461032c578063fd3a0cdd1461035f576100c9565b8063a21dfaee14610265578063aaabadc5146102e9578063cdf0e934146102f1576100c9565b8063851c1bb3116100b2578063851c1bb3146101db5780638d928af81461022c5780638dd26fc61461025d576100c9565b8063194d810f146100ce5780636daefab614610103575b600080fd5b610101600480360360208110156100e457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661037c565b005b6101016004803603606081101561011957600080fd5b81019060208101813564010000000081111561013457600080fd5b82018360208201111561014657600080fd5b8035906020019184602083028401116401000000008311171561016857600080fd5b91939092909160208101903564010000000081111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460208302840111640100000000831117156101ba57600080fd5b91935091503573ffffffffffffffffffffffffffffffffffffffff16610390565b61021a600480360360208110156101f157600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610524565b60408051918252519081900360200190f35b610234610595565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61021a6105b9565b6102d56004803603602081101561027b57600080fd5b81019060208101813564010000000081111561029657600080fd5b8201836020820111156102a857600080fd5b803590602001918460208302840111640100000000831117156102ca57600080fd5b5090925090506105ca565b604080519115158252519081900360200190f35b61023461062c565b6102d56004803603602081101561030757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106ac565b6102346106bf565b6101016004803603602081101561034257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106e3565b6102346004803603602081101561037557600080fd5b50356107ad565b610384610841565b61038d81610887565b50565b610398610841565b6103a285856105ca565b6103f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610cf16027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636daefab686868686866040518663ffffffff1660e01b81526004018080602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381038352888882818152602001925060200280828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169091018481038352868152602090810191508790870280828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561050557600080fd5b505af1158015610519573d6000803e3d6000fd5b505050505050505050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006105c56000610949565b905090565b600081815b8181101561061f576106088585838181106105e657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166106ac565b61061757600092505050610626565b6001016105cf565b5060019150505b92915050565b6000610636610595565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561067b57600080fd5b505afa15801561068f573d6000803e3d6000fd5b505050506040513d60208110156106a557600080fd5b5051905090565b60006106b8818361094d565b1592915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6106eb610841565b6106f660008261097b565b61076157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e206973206e6f742064656e796c6973746564000000000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517fecc8f38812b30ead07c6cdc6aa7b0eb8d42772335216e06122f7e821db6852589181900360200190a150565b60006106268183610b29565b60006107c5838361094d565b61083957508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915585549082528286019093526040902091909155610626565b506000610626565b60006108706000357fffffffff0000000000000000000000000000000000000000000000000000000016610524565b905061038d61087f8233610b4c565b610191610c15565b6108926000826107b9565b6108fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f546f6b656e20616c72656164792064656e796c69737465640000000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517ff1a0f8a2f72d5da4064fe8bb9f78d485b757edfbd004465e56f102f2b8ab6edb9181900360200190a150565b5490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120548015610b1f5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083019101808214610a845760008660000182815481106109e957fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff90911691508190889085908110610a1f57fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b8554869080610a8f57fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061062692505050565b6000915050610626565b8154600090610b3b9083106064610c15565b610b458383610c27565b9392505050565b6000610b5661062c565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015610be257600080fd5b505afa158015610bf6573d6000803e3d6000fd5b505050506040513d6020811015610c0c57600080fd5b50519392505050565b81610c2357610c2381610c61565b5050565b6000826000018281548110610c3857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261038d917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe417474656d7074696e6720746f2077697468647261772064656e796c697374656420746f6b656ea26469706673582212202a8d5e634aecf3cff89d3a4bed6a8b01cd473c6aa26319289c012b7fd49a6e7664736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1064 CODESIZE SUB DUP1 PUSH3 0x1064 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP3 SWAP5 SWAP3 SWAP4 DUP4 ADD SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xC2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA8 JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 DUP2 DUP2 MSTORE ADDRESS PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP10 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH4 0xD2946C2B PUSH1 0xE0 SHL DUP3 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP6 POP PUSH4 0xD2946C2B SWAP5 POP PUSH1 0x4 DUP1 DUP4 ADD SWAP5 POP PUSH1 0x20 SWAP4 POP SWAP1 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x13A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xC0 MSTORE DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x19F JUMPI PUSH3 0x196 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x182 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH3 0x1A9 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 ADD PUSH3 0x168 JUMP JUMPDEST POP POP POP POP PUSH3 0x2DF JUMP JUMPDEST PUSH3 0x1C4 DUP2 PUSH1 0x0 PUSH3 0x255 PUSH1 0x20 SHL PUSH3 0x7B9 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x216 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546F6B656E20616C72656164792064656E796C69737465640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xF1A0F8A2F72D5DA4064FE8BB9F78D485B757EDFBD004465E56F102F2B8AB6EDB SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x263 DUP4 DUP4 PUSH3 0x2BE JUMP JUMPDEST PUSH3 0x2B4 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH3 0x2B8 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0xD4D PUSH3 0x317 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x3F9 MSTORE DUP1 PUSH2 0x6C1 MSTORE POP DUP1 PUSH2 0x597 MSTORE POP DUP1 PUSH2 0x52A MSTORE POP PUSH2 0xD4D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA21DFAEE GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD2946C2B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD2946C2B EQ PUSH2 0x324 JUMPI DUP1 PUSH4 0xDE0B27C9 EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0xFD3A0CDD EQ PUSH2 0x35F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0xA21DFAEE EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x2E9 JUMPI DUP1 PUSH4 0xCDF0E934 EQ PUSH2 0x2F1 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x8DD26FC6 EQ PUSH2 0x25D JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x194D810F EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x6DAEFAB6 EQ PUSH2 0x103 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x101 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x37C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x101 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x119 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x198 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x390 JUMP JUMPDEST PUSH2 0x21A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x524 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH2 0x595 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x21A PUSH2 0x5B9 JUMP JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x5CA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH2 0x62C JUMP JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6AC JUMP JUMPDEST PUSH2 0x234 PUSH2 0x6BF JUMP JUMPDEST PUSH2 0x101 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x342 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7AD JUMP JUMPDEST PUSH2 0x384 PUSH2 0x841 JUMP JUMPDEST PUSH2 0x38D DUP2 PUSH2 0x887 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x398 PUSH2 0x841 JUMP JUMPDEST PUSH2 0x3A2 DUP6 DUP6 PUSH2 0x5CA JUMP JUMPDEST PUSH2 0x3F7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xCF1 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6DAEFAB6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP9 DUP9 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 SWAP2 ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 POP DUP8 SWAP1 DUP8 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x505 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x519 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C5 PUSH1 0x0 PUSH2 0x949 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x61F JUMPI PUSH2 0x608 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x5E6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6AC JUMP JUMPDEST PUSH2 0x617 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x626 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x5CF JUMP JUMPDEST POP PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x636 PUSH2 0x595 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x68F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 DUP2 DUP4 PUSH2 0x94D JUMP JUMPDEST ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x6EB PUSH2 0x841 JUMP JUMPDEST PUSH2 0x6F6 PUSH1 0x0 DUP3 PUSH2 0x97B JUMP JUMPDEST PUSH2 0x761 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546F6B656E206973206E6F742064656E796C6973746564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xECC8F38812B30EAD07C6CDC6AA7B0EB8D42772335216E06122F7E821DB685258 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x626 DUP2 DUP4 PUSH2 0xB29 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C5 DUP4 DUP4 PUSH2 0x94D JUMP JUMPDEST PUSH2 0x839 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x626 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x626 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x870 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x524 JUMP JUMPDEST SWAP1 POP PUSH2 0x38D PUSH2 0x87F DUP3 CALLER PUSH2 0xB4C JUMP JUMPDEST PUSH2 0x191 PUSH2 0xC15 JUMP JUMPDEST PUSH2 0x892 PUSH1 0x0 DUP3 PUSH2 0x7B9 JUMP JUMPDEST PUSH2 0x8FD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546F6B656E20616C72656164792064656E796C69737465640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xF1A0F8A2F72D5DA4064FE8BB9F78D485B757EDFBD004465E56F102F2B8AB6EDB SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0xB1F JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0xA84 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x9E9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0xA1F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0xA8F JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x626 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x626 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0xB3B SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0xC15 JUMP JUMPDEST PUSH2 0xB45 DUP4 DUP4 PUSH2 0xC27 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB56 PUSH2 0x62C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xC23 JUMPI PUSH2 0xC23 DUP2 PUSH2 0xC61 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xC38 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x38D SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID COINBASE PUSH21 0x74656D7074696E6720746F20776974686472617720 PUSH5 0x656E796C69 PUSH20 0x74656420746F6B656EA26469706673582212202A DUP14 0x5E PUSH4 0x4AECF3CF 0xF8 SWAP14 GASPRICE 0x4B 0xED PUSH11 0x8B01CD473C6AA26319289C ADD 0x2B PUSH32 0xD49A6E7664736F6C634300070100330000000000000000000000000000000000 ","sourceMap":"1367:3591:66:-:0;;;1639:343;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1639:343:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1639:343:66;;;;;;;;1143:4:43;2049:46:39;;-1:-1:-1;;;;;;1162:14:43::1;::::0;;;;::::1;::::0;-1:-1:-1;;;1768:32:66;;;-1:-1:-1;;;;;1162:14:43;::::1;::::0;-1:-1:-1;1768:30:66::1;::::0;-1:-1:-1;1768:32:66::1;::::0;;::::1;::::0;-1:-1:-1;1768:32:66::1;::::0;-1:-1:-1;1768:32:66;;;;;;;1162:14:43;1768:32:66;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;1768:32:66;1743:57:::1;::::0;-1:-1:-1;;;;;;1743:57:66;::::1;::::0;1834:26;;1811:20:::1;1870:106;1894:12;1890:1;:16;1870:106;;;1927:38;1942:19;1962:1;1942:22;;;;;;;;;;;;;;1927:14;;;:38;;:::i;:::-;1908:3;;1870:106;;;;1639:343;::::0;;1367:3591;;4781:175;4846:37;4876:5;4846:17;:21;;;;;;:37;;;;:::i;:::-;4838:74;;;;;-1:-1:-1;;;4838:74:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;4927:22;;;-1:-1:-1;;;;;4927:22:66;;;;;;;;;;;;;;;4781:175;:::o;1851:410:53:-;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:53;;;;;;;;-1:-1:-1;1978:23:53;;;;;;;;;;;;-1:-1:-1;;;;;;1978:23:53;-1:-1:-1;;;;;1978:23:53;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:53;1937:318;1851:410;;;;:::o;3977:134::-;-1:-1:-1;;;;;4080:19:53;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;1367:3591:66:-;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3380":[{"length":32,"start":1322}],"4027":[{"length":32,"start":1431}],"9089":[{"length":32,"start":1017},{"length":32,"start":1729}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100c95760003560e01c8063a21dfaee11610081578063d2946c2b1161005b578063d2946c2b14610324578063de0b27c91461032c578063fd3a0cdd1461035f576100c9565b8063a21dfaee14610265578063aaabadc5146102e9578063cdf0e934146102f1576100c9565b8063851c1bb3116100b2578063851c1bb3146101db5780638d928af81461022c5780638dd26fc61461025d576100c9565b8063194d810f146100ce5780636daefab614610103575b600080fd5b610101600480360360208110156100e457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661037c565b005b6101016004803603606081101561011957600080fd5b81019060208101813564010000000081111561013457600080fd5b82018360208201111561014657600080fd5b8035906020019184602083028401116401000000008311171561016857600080fd5b91939092909160208101903564010000000081111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460208302840111640100000000831117156101ba57600080fd5b91935091503573ffffffffffffffffffffffffffffffffffffffff16610390565b61021a600480360360208110156101f157600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610524565b60408051918252519081900360200190f35b610234610595565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61021a6105b9565b6102d56004803603602081101561027b57600080fd5b81019060208101813564010000000081111561029657600080fd5b8201836020820111156102a857600080fd5b803590602001918460208302840111640100000000831117156102ca57600080fd5b5090925090506105ca565b604080519115158252519081900360200190f35b61023461062c565b6102d56004803603602081101561030757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106ac565b6102346106bf565b6101016004803603602081101561034257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106e3565b6102346004803603602081101561037557600080fd5b50356107ad565b610384610841565b61038d81610887565b50565b610398610841565b6103a285856105ca565b6103f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610cf16027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636daefab686868686866040518663ffffffff1660e01b81526004018080602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381038352888882818152602001925060200280828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169091018481038352868152602090810191508790870280828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561050557600080fd5b505af1158015610519573d6000803e3d6000fd5b505050505050505050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006105c56000610949565b905090565b600081815b8181101561061f576106088585838181106105e657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166106ac565b61061757600092505050610626565b6001016105cf565b5060019150505b92915050565b6000610636610595565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561067b57600080fd5b505afa15801561068f573d6000803e3d6000fd5b505050506040513d60208110156106a557600080fd5b5051905090565b60006106b8818361094d565b1592915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6106eb610841565b6106f660008261097b565b61076157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e206973206e6f742064656e796c6973746564000000000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517fecc8f38812b30ead07c6cdc6aa7b0eb8d42772335216e06122f7e821db6852589181900360200190a150565b60006106268183610b29565b60006107c5838361094d565b61083957508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915585549082528286019093526040902091909155610626565b506000610626565b60006108706000357fffffffff0000000000000000000000000000000000000000000000000000000016610524565b905061038d61087f8233610b4c565b610191610c15565b6108926000826107b9565b6108fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f546f6b656e20616c72656164792064656e796c69737465640000000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517ff1a0f8a2f72d5da4064fe8bb9f78d485b757edfbd004465e56f102f2b8ab6edb9181900360200190a150565b5490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120548015610b1f5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083019101808214610a845760008660000182815481106109e957fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff90911691508190889085908110610a1f57fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b8554869080610a8f57fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061062692505050565b6000915050610626565b8154600090610b3b9083106064610c15565b610b458383610c27565b9392505050565b6000610b5661062c565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015610be257600080fd5b505afa158015610bf6573d6000803e3d6000fd5b505050506040513d6020811015610c0c57600080fd5b50519392505050565b81610c2357610c2381610c61565b5050565b6000826000018281548110610c3857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261038d917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe417474656d7074696e6720746f2077697468647261772064656e796c697374656420746f6b656ea26469706673582212202a8d5e634aecf3cff89d3a4bed6a8b01cd473c6aa26319289c012b7fd49a6e7664736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA21DFAEE GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD2946C2B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD2946C2B EQ PUSH2 0x324 JUMPI DUP1 PUSH4 0xDE0B27C9 EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0xFD3A0CDD EQ PUSH2 0x35F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0xA21DFAEE EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x2E9 JUMPI DUP1 PUSH4 0xCDF0E934 EQ PUSH2 0x2F1 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x8DD26FC6 EQ PUSH2 0x25D JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x194D810F EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x6DAEFAB6 EQ PUSH2 0x103 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x101 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x37C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x101 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x119 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x198 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x390 JUMP JUMPDEST PUSH2 0x21A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x524 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH2 0x595 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x21A PUSH2 0x5B9 JUMP JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x5CA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH2 0x62C JUMP JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6AC JUMP JUMPDEST PUSH2 0x234 PUSH2 0x6BF JUMP JUMPDEST PUSH2 0x101 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x342 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7AD JUMP JUMPDEST PUSH2 0x384 PUSH2 0x841 JUMP JUMPDEST PUSH2 0x38D DUP2 PUSH2 0x887 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x398 PUSH2 0x841 JUMP JUMPDEST PUSH2 0x3A2 DUP6 DUP6 PUSH2 0x5CA JUMP JUMPDEST PUSH2 0x3F7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xCF1 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6DAEFAB6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP9 DUP9 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 SWAP2 ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 POP DUP8 SWAP1 DUP8 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x505 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x519 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C5 PUSH1 0x0 PUSH2 0x949 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x61F JUMPI PUSH2 0x608 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x5E6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6AC JUMP JUMPDEST PUSH2 0x617 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x626 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x5CF JUMP JUMPDEST POP PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x636 PUSH2 0x595 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x68F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 DUP2 DUP4 PUSH2 0x94D JUMP JUMPDEST ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x6EB PUSH2 0x841 JUMP JUMPDEST PUSH2 0x6F6 PUSH1 0x0 DUP3 PUSH2 0x97B JUMP JUMPDEST PUSH2 0x761 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546F6B656E206973206E6F742064656E796C6973746564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xECC8F38812B30EAD07C6CDC6AA7B0EB8D42772335216E06122F7E821DB685258 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x626 DUP2 DUP4 PUSH2 0xB29 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C5 DUP4 DUP4 PUSH2 0x94D JUMP JUMPDEST PUSH2 0x839 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x626 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x626 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x870 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x524 JUMP JUMPDEST SWAP1 POP PUSH2 0x38D PUSH2 0x87F DUP3 CALLER PUSH2 0xB4C JUMP JUMPDEST PUSH2 0x191 PUSH2 0xC15 JUMP JUMPDEST PUSH2 0x892 PUSH1 0x0 DUP3 PUSH2 0x7B9 JUMP JUMPDEST PUSH2 0x8FD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546F6B656E20616C72656164792064656E796C69737465640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xF1A0F8A2F72D5DA4064FE8BB9F78D485B757EDFBD004465E56F102F2B8AB6EDB SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0xB1F JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0xA84 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x9E9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0xA1F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0xA8F JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x626 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x626 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0xB3B SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0xC15 JUMP JUMPDEST PUSH2 0xB45 DUP4 DUP4 PUSH2 0xC27 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB56 PUSH2 0x62C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xC23 JUMPI PUSH2 0xC23 DUP2 PUSH2 0xC61 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xC38 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x38D SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID COINBASE PUSH21 0x74656D7074696E6720746F20776974686472617720 PUSH5 0x656E796C69 PUSH20 0x74656420746F6B656EA26469706673582212202A DUP14 0x5E PUSH4 0x4AECF3CF 0xF8 SWAP14 GASPRICE 0x4B 0xED PUSH11 0x8B01CD473C6AA26319289C ADD 0x2B PUSH32 0xD49A6E7664736F6C634300070100330000000000000000000000000000000000 ","sourceMap":"1367:3591:66:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4321:106;;;;;;;;;;;;;;;;-1:-1:-1;4321:106:66;;;;:::i;:::-;;3755:443;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3755:443:66;-1:-1:-1;3755:443:66;;;;:::i;2607:430:39:-;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:39;;;;:::i;:::-;;;;;;;;;;;;;;;;1247:79:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3260:128:66;;;:::i;2660:292::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2660:292:66;;-1:-1:-1;2660:292:66;-1:-1:-1;2660:292:66;:::i;:::-;;;;;;;;;;;;;;;;;;1386:109:43;;;:::i;2329:146:66:-;;;;;;;;;;;;;;;;-1:-1:-1;2329:146:66;;;;:::i;2070:138::-;;;:::i;4548:200::-;;;;;;;;;;;;;;;;-1:-1:-1;4548:200:66;;;;:::i;3040:142::-;;;;;;;;;;;;;;;;-1:-1:-1;3040:142:66;;:::i;4321:106::-;2276:21:39;:19;:21::i;:::-;4399::66::1;4414:5;4399:14;:21::i;:::-;4321:106:::0;:::o;3755:443::-;2276:21:39;:19;:21::i;:::-;3938:28:66::1;3959:6;;3938:20;:28::i;:::-;3930:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4119:22;:44;;;4164:6;;4172:7;;4181:9;4119:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;-1:-1:-1;4119:72:66;;;::::1;::::0;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3755:443:::0;;;;;:::o;2607:430:39:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;1247:79:43:-;1313:6;1247:79;:::o;3260:128:66:-;3329:7;3355:26;:17;:24;:26::i;:::-;3348:33;;3260:128;:::o;2660:292::-;2746:4;2785:6;2746:4;2808:117;2832:12;2828:1;:16;2808:117;;;2870:30;2890:6;;2897:1;2890:9;;;;;;;;;;;;;;;2870:19;:30::i;:::-;2865:49;;2909:5;2902:12;;;;;;2865:49;2846:3;;2808:117;;;;2941:4;2934:11;;;2660:292;;;;;:::o;1386:109:43:-;1432:11;1462:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1462:26:43;;-1:-1:-1;1386:109:43;:::o;2329:146:66:-;2402:4;2426:42;2402:4;2461:5;2426:26;:42::i;:::-;2425:43;;2329:146;-1:-1:-1;;2329:146:66:o;2070:138::-;2179:22;2070:138;:::o;4548:200::-;2276:21:39;:19;:21::i;:::-;4635:40:66::1;:17;4668:5:::0;4635:24:::1;:40::i;:::-;4627:76;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;4718:23;::::0;;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;4548:200:::0;:::o;3040:142::-;3115:6;3147:27;3115:6;3168:5;3147:20;:27::i;1851:410:53:-;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:53;;;;;;;;-1:-1:-1;1978:23:53;;;;;;;;;;;;;;;;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:53;2232:12;;2420:181:39;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;9891:3:14;2524:8:39;:70::i;4781:175:66:-;4846:37;:17;4876:5;4846:21;:37::i;:::-;4838:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4927:22;;;;;;;;;;;;;;;;;;;4781:175;:::o;4192:114:53:-;4281:18;;4192:114::o;3977:134::-;4080:19;;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;2429:1467::-;2639:19;;;2502:4;2639:19;;;:12;;;:19;;;;;;2673:15;;2669:1221;;3114:18;;3066:14;;;;;3114:22;3236:26;;;3232:389;;3282:17;3302:3;:11;;3314:9;3302:22;;;;;;;;;;;;;;;;;;3424:26;;3302:22;;;;;-1:-1:-1;3302:22:53;;3424:3;;3436:13;;3424:26;;;;;;;;;;;;;;;;;;:38;;;;;;;;;;;3536:23;;;;;;-1:-1:-1;3536:12:53;;;:23;;;;;;3562:17;;;3536:43;;3232:389;3699:17;;:3;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3791:19;;;;3699:17;3791:12;;;:19;;;;;;3784:26;;;;3699:17;-1:-1:-1;3825:11:53;;-1:-1:-1;;;3825:11:53;2669:1221;3874:5;3867:12;;;;;4648:199;4750:18;;4722:7;;4741:58;;4750:26;-1:-1:-1;5640:3:14;4741:8:53;:58::i;:::-;4816:24;4829:3;4834:5;4816:12;:24::i;:::-;4809:31;4648:199;-1:-1:-1;;;4648:199:53:o;1501:178:43:-;1589:4;1612:15;:13;:15::i;:::-;:26;;;1639:8;1649:7;1666:4;1612:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1612:60:43;;1501:178;-1:-1:-1;;;1501:178:43:o;918:101:14:-;987:9;982:34;;998:18;1006:9;998:7;:18::i;:::-;918:101;;:::o;5212:135:53:-;5296:7;5322:3;:11;;5334:5;5322:18;;;;;;;;;;;;;;;;;;;;;5212:135;-1:-1:-1;;;5212:135:53:o;1437:126:14:-;4395:66;1732:18;4383:79;;;4601:66;4595:4;4588:80;4743:1;4737:4;4730:15;2871:2;2904:18;;;2949;;;2876:4;2945:29;;;3747:1;3838:14;2856:18;;;3827:26;2997:18;;;;3044;;;3040:29;3859:2;3855:17;3823:50;3802:72;;3797:3;3793:82;4810:4;4803:26;1484:28;;;;1761:14;;5036:3;;5026:14"},"methodIdentifiers":{"allowlistToken(address)":"de0b27c9","denylistToken(address)":"194d810f","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getDenylistedToken(uint256)":"fd3a0cdd","getDenylistedTokensLength()":"8dd26fc6","getProtocolFeesCollector()":"d2946c2b","getVault()":"8d928af8","isWithdrawableToken(address)":"cdf0e934","isWithdrawableTokens(address[])":"a21dfaee","withdrawCollectedFees(address[],uint256[],address)":"6daefab6"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"initialDeniedTokens\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAllowlisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDenylisted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"allowlistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"denylistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getDenylistedToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDenylistedTokensLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeesCollector\",\"outputs\":[{\"internalType\":\"contract IProtocolFeesCollector\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isWithdrawableToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"isWithdrawableTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawCollectedFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Balancer Labs\",\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"isWithdrawableTokens(address[])\":{\"details\":\"Returns false if any token is denylisted.\"},\"withdrawCollectedFees(address[],uint256[],address)\":{\"details\":\"Reverts if attempting to withdraw a denylisted token.\",\"params\":{\"amounts\":\"- an array of the amounts of each token to withdraw.\",\"recipient\":\"- the address to which to send the withdrawn tokens.\",\"tokens\":\"- an array of token addresses to withdraw.\"}}},\"title\":\"Protocol Fees Withdrawer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowlistToken(address)\":{\"notice\":\"Marks the provided token as eligible for withdrawal from the Protocol Fee Collector\"},\"denylistToken(address)\":{\"notice\":\"Marks the provided token as ineligible for withdrawal from the Protocol Fee Collector\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getDenylistedToken(uint256)\":{\"notice\":\"Returns the denylisted token at the given `index`.\"},\"getDenylistedTokensLength()\":{\"notice\":\"Returns the number of denylisted tokens.\"},\"getProtocolFeesCollector()\":{\"notice\":\"Returns the address of the Protocol Fee Collector.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"isWithdrawableToken(address)\":{\"notice\":\"Returns whether the provided token may be withdrawn from the Protocol Fee Collector\"},\"isWithdrawableTokens(address[])\":{\"notice\":\"Returns whether the provided array of tokens may be withdrawn from the Protocol Fee Collector\"},\"withdrawCollectedFees(address[],uint256[],address)\":{\"notice\":\"Withdraws fees from the Protocol Fee Collector.\"}},\"notice\":\"Safety layer around the Protocol Fees Collector which allows withdrawals of specific tokens to be blocked. This is useful for the case where tokens that shouldn't be distributed are unexpectedly paid into the Protocol Fees Collector.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ProtocolFeesWithdrawer.sol\":\"ProtocolFeesWithdrawer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0x1e5bca6b4fb897adc2458f65aa7abed8499dcf146ac5872c62544d91516867cb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faa81254fe029b7ccd05635d6919da30bcb2114026996d10f6b51fc0e1f5b850\",\"dweb:/ipfs/Qmax3d2kq51xjt6hjYgskuXSrsB3fBZ4LAxBPRDDzbg8XD\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\":{\"keccak256\":\"0x7adb9c585633ebdc50dfae87e37e5225ac577daccc8f15f8974d3b6f60cb0378\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://dee1825fedae9b6a4abe5c22c41ac17231f9a0178c9bcf50d56a9a3c9c4cda0f\",\"dweb:/ipfs/QmS5JmGd3AzdhdVV1JMQWbT4EkfEQYdxXygLeC5bU8awnf\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0x6c48b193602f6d6407e8fca3389fb32264a91f1de8ec33db209694e3bf9d0d13\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1fa358f1537907cdd9f6b176f5a1effbbe9925429634038e9c533493ed824cab\",\"dweb:/ipfs/QmW1EcMLkMFuDKrPwWJ2qhBkmVzAUTVEMP75kw7D8XTjJf\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]},\"contracts/ProtocolFeesWithdrawer.sol\":{\"keccak256\":\"0x5be2d5002c3a011f5400af4fb194d7dae569aacd978df1c7f7e44fc9947e274a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://88a071fdf81242e4945c8b52883d4d2e20511c4f3829bdbbb86532fba94bd2e3\",\"dweb:/ipfs/QmPAHtgVGTkg5hR4KTG2VasEMyWpyaDQex3c4ZXBngCbRq\"]}},\"version\":1}"}},"contracts/relayer/AaveWrapping.sol":{"AaveWrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IStaticATokenLM","name":"staticToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapAaveStaticToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStaticATokenLM","name":"staticToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"fromUnderlying","type":"bool"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapAaveDynamicToken","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","unwrapAaveStaticToken(address,address,address,uint256,bool,uint256)":"7ab6e03c","wrapAaveDynamicToken(address,address,address,uint256,bool,uint256)":"433b0865"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStaticATokenLM\",\"name\":\"staticToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapAaveStaticToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStaticATokenLM\",\"name\":\"staticToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapAaveDynamicToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"AaveWrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap Aave's aTokens into their StaticAToken wrappers\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/AaveWrapping.sol\":\"AaveWrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\":{\"keccak256\":\"0x82df6d6c71a197051483edc2854de4aff2318d9336647706240af5bc9b70f544\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8f40c60825147183ed5b35d09c16d2eeaf5955168e4a5dd3343fa8869090aa97\",\"dweb:/ipfs/QmY1rD9qjoh6K3T4Bgfo2QFt8jTTJPdY6yV2RkGgDRsq3Z\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/AaveWrapping.sol\":{\"keccak256\":\"0x07b2d4aa090776d6e710b18a4b1a5d5f165aa535485698eaa1c68b112807bc33\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://aa1ab801724fd42dc74b2e5871a7e6c22ffbfb19676638408abb7323335734cf\",\"dweb:/ipfs/QmPv9HHsH1MtShXSqgK8GKWsfFDCUAFRAnPwyJ51bsyhJw\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]}},\"version\":1}"}},"contracts/relayer/BalancerRelayer.sol":{"BalancerRelayer":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"address","name":"libraryAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"getLibrary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b5060405161078738038061078783398101604081905261002f91610052565b60016000556001600160601b0319606092831b8116608052911b1660a0526100a3565b60008060408385031215610064578182fd5b825161006f8161008b565b60208401519092506100808161008b565b809150509250929050565b6001600160a01b03811681146100a057600080fd5b50565b60805160601c60a05160601c6106b36100d46000398060fc528061020f5250806058528061012052506106b36000f3fe6080604052600436106100385760003560e01c80637678922e146100885780638d928af8146100b3578063ac9650d8146100c857610083565b36610083576100813373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102066100e8565b005b600080fd5b34801561009457600080fd5b5061009d6100fa565b6040516100aa919061050e565b60405180910390f35b3480156100bf57600080fd5b5061009d61011e565b6100db6100d6366004610480565b610142565b6040516100aa919061052f565b816100f6576100f68161026e565b5050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061014c61029b565b8167ffffffffffffffff8111801561016357600080fd5b5060405190808252806020026020018201604052801561019757816020015b60608152602001906001900390816101825790505b50905060005b82811015610257576102388484838181106101b457fe5b90506020028101906101c691906105e3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016929150506102b4565b82828151811061024457fe5b602090810291909101015260010161019d565b50610260610337565b610268610348565b92915050565b610298817f42414c000000000000000000000000000000000000000000000000000000000061034f565b50565b6102ad600260005414156101906100e8565b6002600055565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516102df91906104ef565b600060405180830381855af49150503d806000811461031a576040519150601f19603f3d011682016040523d82523d6000602084013e61031f565b606091505b509150915061032e82826103ca565b95945050505050565b4780156102985761029833826103f4565b6001600055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156103d9575080610268565b8151156103e95781518083602001fd5b6102686101ae61026e565b610403814710156101a36100e8565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516104299061050b565b60006040518083038185875af1925050503d8060008114610466576040519150601f19603f3d011682016040523d82523d6000602084013e61046b565b606091505b5050905061047b816101a46100e8565b505050565b60008060208385031215610492578182fd5b823567ffffffffffffffff808211156104a9578384fd5b818501915085601f8301126104bc578384fd5b8135818111156104ca578485fd5b86602080830285010111156104dd578485fd5b60209290920196919550909350505050565b6000825161050181846020870161064d565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156105d6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610599818989018a850161064d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01695909501860194509285019290850190600101610554565b5092979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610617578283fd5b83018035915067ffffffffffffffff821115610631578283fd5b60200191503681900382131561064657600080fd5b9250929050565b60005b83811015610668578181015183820152602001610650565b83811115610677576000848401525b5050505056fea2646970667358221220063fdaaad6c7f32fb6dd53f100269a9ea16c7241c4a9587b1f83f82a35b5424264736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x787 CODESIZE SUB DUP1 PUSH2 0x787 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH2 0xA3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x64 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x6F DUP2 PUSH2 0x8B JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x80 DUP2 PUSH2 0x8B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x6B3 PUSH2 0xD4 PUSH1 0x0 CODECOPY DUP1 PUSH1 0xFC MSTORE DUP1 PUSH2 0x20F MSTORE POP DUP1 PUSH1 0x58 MSTORE DUP1 PUSH2 0x120 MSTORE POP PUSH2 0x6B3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7678922E EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xC8 JUMPI PUSH2 0x83 JUMP JUMPDEST CALLDATASIZE PUSH2 0x83 JUMPI PUSH2 0x81 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x206 PUSH2 0xE8 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0xFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0x11E JUMP JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x480 JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x52F JUMP JUMPDEST DUP2 PUSH2 0xF6 JUMPI PUSH2 0xF6 DUP2 PUSH2 0x26E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x14C PUSH2 0x29B JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x197 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x182 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x257 JUMPI PUSH2 0x238 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1B4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x5E3 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 SWAP2 POP POP PUSH2 0x2B4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x244 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x19D JUMP JUMPDEST POP PUSH2 0x260 PUSH2 0x337 JUMP JUMPDEST PUSH2 0x268 PUSH2 0x348 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x298 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x34F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x2AD PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x31A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x31F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x32E DUP3 DUP3 PUSH2 0x3CA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH2 0x298 CALLER DUP3 PUSH2 0x3F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x3D9 JUMPI POP DUP1 PUSH2 0x268 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x3E9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x268 PUSH2 0x1AE PUSH2 0x26E JUMP JUMPDEST PUSH2 0x403 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x429 SWAP1 PUSH2 0x50B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x46B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x47B DUP2 PUSH2 0x1A4 PUSH2 0xE8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x492 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4BC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x4CA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x4DD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x501 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x64D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5D6 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP8 MSTORE PUSH2 0x599 DUP2 DUP10 DUP10 ADD DUP11 DUP6 ADD PUSH2 0x64D JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP6 SWAP1 SWAP6 ADD DUP7 ADD SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x554 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x617 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x631 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x668 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x650 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MOD EXTCODEHASH 0xDA 0xAA 0xD6 0xC7 RETURN 0x2F 0xB6 0xDD MSTORE8 CALL STOP 0x26 SWAP11 SWAP15 LOG1 PUSH13 0x7241C4A9587B1F83F82A35B542 TIMESTAMP PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"2394:1831:68:-:0;;;2849:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2070:1:54;2175:7;:22;-1:-1:-1;;2909:14:68;;;;;;;2933:25;;;;;2394:1831;;317:429:-1;;;464:2;452:9;443:7;439:23;435:32;432:2;;;-1:-1;;470:12;432:2;245:6;239:13;257:48;299:5;257:48;:::i;:::-;648:2;698:22;;83:13;522:89;;-1:-1;101:33;83:13;101:33;:::i;:::-;656:74;;;;426:320;;;;;:::o;1092:117::-;-1:-1;1026:54;;1151:35;;1141:2;;1200:1;;1190:12;1141:2;1135:74;:::o;:::-;2394:1831:68;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"9512":[{"length":32,"start":88},{"length":32,"start":288}],"9514":[{"length":32,"start":252},{"length":32,"start":527}]},"linkReferences":{},"object":"6080604052600436106100385760003560e01c80637678922e146100885780638d928af8146100b3578063ac9650d8146100c857610083565b36610083576100813373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102066100e8565b005b600080fd5b34801561009457600080fd5b5061009d6100fa565b6040516100aa919061050e565b60405180910390f35b3480156100bf57600080fd5b5061009d61011e565b6100db6100d6366004610480565b610142565b6040516100aa919061052f565b816100f6576100f68161026e565b5050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061014c61029b565b8167ffffffffffffffff8111801561016357600080fd5b5060405190808252806020026020018201604052801561019757816020015b60608152602001906001900390816101825790505b50905060005b82811015610257576102388484838181106101b457fe5b90506020028101906101c691906105e3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016929150506102b4565b82828151811061024457fe5b602090810291909101015260010161019d565b50610260610337565b610268610348565b92915050565b610298817f42414c000000000000000000000000000000000000000000000000000000000061034f565b50565b6102ad600260005414156101906100e8565b6002600055565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516102df91906104ef565b600060405180830381855af49150503d806000811461031a576040519150601f19603f3d011682016040523d82523d6000602084013e61031f565b606091505b509150915061032e82826103ca565b95945050505050565b4780156102985761029833826103f4565b6001600055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156103d9575080610268565b8151156103e95781518083602001fd5b6102686101ae61026e565b610403814710156101a36100e8565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516104299061050b565b60006040518083038185875af1925050503d8060008114610466576040519150601f19603f3d011682016040523d82523d6000602084013e61046b565b606091505b5050905061047b816101a46100e8565b505050565b60008060208385031215610492578182fd5b823567ffffffffffffffff808211156104a9578384fd5b818501915085601f8301126104bc578384fd5b8135818111156104ca578485fd5b86602080830285010111156104dd578485fd5b60209290920196919550909350505050565b6000825161050181846020870161064d565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156105d6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610599818989018a850161064d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01695909501860194509285019290850190600101610554565b5092979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610617578283fd5b83018035915067ffffffffffffffff821115610631578283fd5b60200191503681900382131561064657600080fd5b9250929050565b60005b83811015610668578181015183820152602001610650565b83811115610677576000848401525b5050505056fea2646970667358221220063fdaaad6c7f32fb6dd53f100269a9ea16c7241c4a9587b1f83f82a35b5424264736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7678922E EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xC8 JUMPI PUSH2 0x83 JUMP JUMPDEST CALLDATASIZE PUSH2 0x83 JUMPI PUSH2 0x81 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x206 PUSH2 0xE8 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0xFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0x11E JUMP JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x480 JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x52F JUMP JUMPDEST DUP2 PUSH2 0xF6 JUMPI PUSH2 0xF6 DUP2 PUSH2 0x26E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x14C PUSH2 0x29B JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x197 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x182 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x257 JUMPI PUSH2 0x238 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1B4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x5E3 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 SWAP2 POP POP PUSH2 0x2B4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x244 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x19D JUMP JUMPDEST POP PUSH2 0x260 PUSH2 0x337 JUMP JUMPDEST PUSH2 0x268 PUSH2 0x348 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x298 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x34F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x2AD PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x31A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x31F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x32E DUP3 DUP3 PUSH2 0x3CA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH2 0x298 CALLER DUP3 PUSH2 0x3F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x3D9 JUMPI POP DUP1 PUSH2 0x268 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x3E9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x268 PUSH2 0x1AE PUSH2 0x26E JUMP JUMPDEST PUSH2 0x403 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x429 SWAP1 PUSH2 0x50B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x46B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x47B DUP2 PUSH2 0x1A4 PUSH2 0xE8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x492 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4BC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x4CA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x4DD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x501 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x64D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5D6 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP8 MSTORE PUSH2 0x599 DUP2 DUP10 DUP10 ADD DUP11 DUP6 ADD PUSH2 0x64D JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP6 SWAP1 SWAP6 ADD DUP7 ADD SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x554 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x617 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x631 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x668 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x650 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MOD EXTCODEHASH 0xDA 0xAA 0xD6 0xC7 RETURN 0x2F 0xB6 0xDD MSTORE8 CALL STOP 0x26 SWAP11 SWAP15 LOG1 PUSH13 0x7241C4A9587B1F83F82A35B542 TIMESTAMP PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"2394:1831:68:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3451:60;3460:10;:29;3482:6;3460:29;;13570:3:14;3451:8:68;:60::i;:::-;2394:1831;;;;;3620:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3524:90;;;;;;;;;;;;;:::i;3721:315::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;918:101:14:-;987:9;982:34;;998:18;1006:9;998:7;:18::i;:::-;918:101;;:::o;3620:95:68:-;3700:8;3620:95;:::o;3524:90::-;3601:6;3524:90;:::o;3721:315::-;3811:22;2613:20:54;:18;:20::i;:::-;3867:4:68;3855:24:::1;::::0;::::1;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3845:34;;3894:9;3889:118;3909:15:::0;;::::1;3889:118;;;3958:38;3988:4;;3993:1;3988:7;;;;;;;;;;;;;;;;;;:::i;:::-;3958:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;3958:29:68::1;:8;:29;::::0;:38;-1:-1:-1;;3958:29:68::1;:38::i;:::-;3945:7;3953:1;3945:10;;;;;;;;;::::0;;::::1;::::0;;;;;:51;3926:3:::1;;3889:118;;;;4017:12;:10;:12::i;:::-;2654:19:54::0;:17;:19::i;:::-;3721:315:68;;;;:::o;1437:126:14:-;1484:28;1492:9;1484:28;:7;:28::i;:::-;1437:126;:::o;2686:271:54:-;2809:48;2113:1;2818:7;;:19;;9835:3:14;2809:8:54;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;4539:294:48:-;4622:12;4706;4720:23;4747:6;:19;;4767:4;4747:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4705:67;;;;4789:37;4806:7;4815:10;4789:16;:37::i;:::-;4782:44;4539:294;-1:-1:-1;;;;;4539:294:48:o;4042:181:68:-;4105:21;4140:16;;4136:81;;4172:34;:10;4193:12;4172:20;:34::i;2963:208:54:-;2070:1;3142:7;:22;2963:208::o;1670:3378:14:-;4395:66;1732:18;4383:79;;;4601:66;4595:4;4588:80;4743:1;4737:4;4730:15;2871:2;2904:18;;;2949;;;2876:4;2945:29;;;3747:1;3838:14;2856:18;;;;3827:26;;;;2997:18;;;;3044;;;3040:29;;3859:2;3855:17;3823:50;3737:4;3743:18;;;;;;3733:29;3729:2;3725:38;3802:72;;;;3797:3;3793:82;4810:4;4803:26;1761:14;;;;;5036:3;;5026:14;5057:714:48;5145:12;5173:7;5169:596;;;-1:-1:-1;5203:10:48;5196:17;;5169:596;5314:17;;:21;5310:445;;5571:10;5565:17;5631:15;5618:10;5614:2;5610:19;5603:44;5520:145;5703:37;11712:3:14;5703:7:48;:37::i;2421:369::-;2502:78;2536:6;2511:21;:31;;11046:3:14;2502:8:48;:78::i;:::-;2669:12;2687:9;:14;;2710:6;2687:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2668:54;;;2732:51;2741:7;11109:3:14;2732:8:48;:51::i;:::-;2421:369;;;:::o;392:419:-1:-;;;542:2;530:9;521:7;517:23;513:32;510:2;;;-1:-1;;548:12;510:2;606:17;593:31;644:18;;636:6;633:30;630:2;;;-1:-1;;666:12;630:2;778:6;767:9;763:22;;;162:3;155:4;147:6;143:17;139:27;129:2;;-1:-1;;170:12;129:2;213:6;200:20;644:18;232:6;229:30;226:2;;;-1:-1;;262:12;226:2;357:3;542:2;;341:6;337:17;298:6;323:32;;320:41;317:2;;;-1:-1;;364:12;317:2;542;294:17;;;;;686:109;;-1:-1;504:307;;-1:-1;;;;504:307::o;3252:271::-;;2581:5;5609:12;2692:52;2737:6;2732:3;2725:4;2718:5;2714:16;2692:52;:::i;:::-;2756:16;;;;;3386:137;-1:-1;;3386:137::o;3530:379::-;3894:10;3718:191::o;3916:222::-;6583:42;6572:54;;;;1087:37;;4043:2;4028:18;;4014:124::o;4145:406::-;;4340:2;;4329:9;4325:18;4340:2;4361:17;4354:47;4415:126;1383:5;5609:12;6042:6;6037:3;6030:19;6070:14;4329:9;6070:14;1395:102;;6070:14;4340:2;1554:6;1550:17;4329:9;1541:27;;1529:39;;4340:2;1648:5;5454:14;-1:-1;1687:357;1712:6;1709:1;1706:13;1687:357;;;1764:20;4329:9;1768:4;1764:20;;1759:3;1752:33;1819:6;1813:13;2223:5;5609:12;6042:6;6037:3;6030:19;2306:52;2351:6;4340:2;6074:3;6070:14;4340:2;2332:5;2328:16;2306:52;:::i;:::-;7291:2;7271:14;7287:7;7267:28;2370:39;;;;;;;-1:-1;2023:14;;;;5876;;;;1734:1;1727:9;1687:357;;;-1:-1;4407:134;;4311:240;-1:-1;;;;;;;4311:240::o;4817:506::-;;;4952:11;4939:25;5003:48;5027:8;5011:14;5007:29;5003:48;4983:18;4979:73;4969:2;;-1:-1;;5056:12;4969:2;5083:33;;5137:18;;;-1:-1;5175:18;5164:30;;5161:2;;;-1:-1;;5197:12;5161:2;5042:4;5225:13;;-1:-1;5011:14;5257:38;;;5247:49;;5244:2;;;5309:1;;5299:12;5244:2;4907:416;;;;;:::o;6927:268::-;6992:1;6999:101;7013:6;7010:1;7007:13;6999:101;;;7080:11;;;7074:18;7061:11;;;7054:39;7035:2;7028:10;6999:101;;;7115:6;7112:1;7109:13;7106:2;;;6992:1;7171:6;7166:3;7162:16;7155:27;7106:2;;6976:219;;;:::o"},"methodIdentifiers":{"getLibrary()":"7678922e","getVault()":"8d928af8","multicall(bytes[])":"ac9650d8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"libraryAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"getLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"Relayers are composed of two contracts: - This contract, which acts as a single point of entry into the system through a multicall function. - A library contract, which defines the allowed behaviour of the relayer. The relayer entrypoint can then repeatedly delegatecall into the library's code to perform actions. We can then run combinations of the library contract's functions in the context of the relayer entrypoint, without having to expose all these functions on the entrypoint contract itself. The multicall function is then a single point of entry for all actions, so we can easily prevent reentrancy. This design gives much stronger reentrancy guarantees, as otherwise a malicious contract could reenter the relayer through another function (which must allow reentrancy for multicall logic), and that would potentially allow them to manipulate global state, resulting in loss of funds in some cases: e.g., sweeping any leftover ETH that should have been refunded to the user. NOTE: Only the entrypoint contract should be allowlisted by Balancer governance as a relayer, so that the Vault will reject calls from outside the context of the entrypoint: e.g., if a user mistakenly called directly into the library contract.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"This contract is not meant to be deployed directly by an EOA, but rather during construction of a contract derived from `BaseRelayerLibrary`, which will provide its own address as the relayer's library.\"}},\"title\":\"Balancer Relayer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows safe multicall execution of a relayer's functions\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/BalancerRelayer.sol\":\"BalancerRelayer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":{\"keccak256\":\"0x00d423628736cf6e571187b6327a8ab9fdf947283582345cc6048ca3086b79a0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://919890e34754f13e43d3bc3f6f07674c4db0f2faf4fe7d1e8246d5513628ac72\",\"dweb:/ipfs/QmSqhMvXntJFgP7EmfZKrVG8t3oQqweYg4WWnV1JNnFUTu\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/relayer/BalancerRelayer.sol\":{\"keccak256\":\"0xb69401485af333ad66e7cc091da40d25354de1870f64584d017909da9f8a8e7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e34ee5869335a6fede8b62e5ee6f81bd714b88f58fe4bf4d991d44372333627d\",\"dweb:/ipfs/QmQvEA5R5HXbyPYYC3GEeDwqcBAfsU5kLvRiNByyJqVXrx\"]}},\"version\":1}"}},"contracts/relayer/BaseRelayerLibrary.sol":{"BaseRelayerLibrary":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getEntrypoint","outputs":[{"internalType":"contract IBalancerRelayer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"relayer","type":"address"},{"internalType":"bool","name":"approved","type":"bool"},{"internalType":"bytes","name":"authorisation","type":"bytes"}],"name":"setRelayerApproval","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101006040527fae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb50960e05234801561003557600080fd5b5060405161122a38038061122a8339810160408190526100549161013b565b806001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561008d57600080fd5b505afa1580156100a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100c5919061013b565b6001600160601b0319606091821b81166080529082901b1660a052604051819030906100f09061012e565b6100fb92919061015e565b604051809103906000f080158015610117573d6000803e3d6000fd5b5060601b6001600160601b03191660c05250610190565b61078780610aa383390190565b60006020828403121561014c578081fd5b815161015781610178565b9392505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b038116811461018d57600080fd5b50565b60805160601c60a05160601c60c05160601c60e0516108d56101ce6000398061052352508061010352508061027c52806102ac5250506108d56000f3fe60806040526004361061005a5760003560e01c80638d928af8116100435780638d928af81461009f578063b6d24737146100b4578063f3cab685146100d45761005a565b80637fd0e5d51461005f57806380db15bd1461008a575b600080fd5b34801561006b57600080fd5b50610074610101565b604051610081919061080e565b60405180910390f35b61009d61009836600461065b565b610125565b005b3480156100ab57600080fd5b506100746102aa565b3480156100c057600080fd5b5061009d6100cf366004610704565b6102ce565b3480156100e057600080fd5b506100f46100ef36600461072f565b610381565b6040516100819190610866565b7f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff8416301480610147575082155b610186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017d9061082f565b60405180910390fd5b606063fa6e671d60e01b3386866040516024016101a5939291906107b7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093525161023292869186910161078c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290506102a273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682610393565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6102d78161041a565b156102e8576102e581610461565b90505b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b361030c6102aa565b836040518363ffffffff1660e01b815260040161032a9291906107e8565b602060405180830381600087803b15801561034457600080fd5b505af1158015610358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037c91906106e8565b505050565b600061038c8261048c565b9392505050565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516103be9190610780565b6000604051808303816000865af19150503d80600081146103fb576040519150601f19603f3d011682016040523d82523d6000602084013e610400565b606091505b509150915061040f82826104a3565b925050505b92915050565b7ffff0000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b600080600061046f8461048c565b9150915061047c846104cd565b1561038c57600082559392505050565b60008061049883610514565b915081549050915091565b606082156104b2575080610414565b8151156104c25781518083602001fd5b6104146101ae610590565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b60006001610521836105bd565b7f00000000000000000000000000000000000000000000000000000000000000006040516020016105539291906107a9565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905280516020909101200392915050565b6105ba817f42414c00000000000000000000000000000000000000000000000000000000006105e0565b50565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60008060008060608587031215610670578384fd5b843561067b8161086f565b9350602085013561068b81610891565b9250604085013567ffffffffffffffff808211156106a7578384fd5b818701915087601f8301126106ba578384fd5b8135818111156106c8578485fd5b8860208285010111156106d9578485fd5b95989497505060200194505050565b6000602082840312156106f9578081fd5b815161038c81610891565b60008060408385031215610716578182fd5b82356107218161086f565b946020939093013593505050565b600060208284031215610740578081fd5b5035919050565b60008151815b81811015610767576020818501810151868301520161074d565b818111156107755782828601525b509290920192915050565b600061038c8284610747565b60006107988286610747565b838582379092019182525092915050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152901515604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff811681146105ba57600080fd5b80151581146105ba57600080fdfea264697066735822122065605c316166416ebdca535a9b92f50d1ff3bcf005744d759e1bc200951232ed64736f6c6343000701003360c060405234801561001057600080fd5b5060405161078738038061078783398101604081905261002f91610052565b60016000556001600160601b0319606092831b8116608052911b1660a0526100a3565b60008060408385031215610064578182fd5b825161006f8161008b565b60208401519092506100808161008b565b809150509250929050565b6001600160a01b03811681146100a057600080fd5b50565b60805160601c60a05160601c6106b36100d46000398060fc528061020f5250806058528061012052506106b36000f3fe6080604052600436106100385760003560e01c80637678922e146100885780638d928af8146100b3578063ac9650d8146100c857610083565b36610083576100813373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102066100e8565b005b600080fd5b34801561009457600080fd5b5061009d6100fa565b6040516100aa919061050e565b60405180910390f35b3480156100bf57600080fd5b5061009d61011e565b6100db6100d6366004610480565b610142565b6040516100aa919061052f565b816100f6576100f68161026e565b5050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061014c61029b565b8167ffffffffffffffff8111801561016357600080fd5b5060405190808252806020026020018201604052801561019757816020015b60608152602001906001900390816101825790505b50905060005b82811015610257576102388484838181106101b457fe5b90506020028101906101c691906105e3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016929150506102b4565b82828151811061024457fe5b602090810291909101015260010161019d565b50610260610337565b610268610348565b92915050565b610298817f42414c000000000000000000000000000000000000000000000000000000000061034f565b50565b6102ad600260005414156101906100e8565b6002600055565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516102df91906104ef565b600060405180830381855af49150503d806000811461031a576040519150601f19603f3d011682016040523d82523d6000602084013e61031f565b606091505b509150915061032e82826103ca565b95945050505050565b4780156102985761029833826103f4565b6001600055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156103d9575080610268565b8151156103e95781518083602001fd5b6102686101ae61026e565b610403814710156101a36100e8565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516104299061050b565b60006040518083038185875af1925050503d8060008114610466576040519150601f19603f3d011682016040523d82523d6000602084013e61046b565b606091505b5050905061047b816101a46100e8565b505050565b60008060208385031215610492578182fd5b823567ffffffffffffffff808211156104a9578384fd5b818501915085601f8301126104bc578384fd5b8135818111156104ca578485fd5b86602080830285010111156104dd578485fd5b60209290920196919550909350505050565b6000825161050181846020870161064d565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156105d6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610599818989018a850161064d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01695909501860194509285019290850190600101610554565b5092979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610617578283fd5b83018035915067ffffffffffffffff821115610631578283fd5b60200191503681900382131561064657600080fd5b9250929050565b60005b83811015610668578181015183820152602001610650565b83811115610677576000848401525b5050505056fea2646970667358221220063fdaaad6c7f32fb6dd53f100269a9ea16c7241c4a9587b1f83f82a35b5424264736f6c63430007010033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE PUSH32 0xAE1DC54057AF8E8E5CE068CDD4383149C7EFCB30E8FB95B592EE1594367FB509 PUSH1 0xE0 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x122A CODESIZE SUB DUP1 PUSH2 0x122A DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x54 SWAP2 PUSH2 0x13B JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAD5C4648 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xC5 SWAP2 SWAP1 PUSH2 0x13B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP1 DUP3 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 ADDRESS SWAP1 PUSH2 0xF0 SWAP1 PUSH2 0x12E JUMP JUMPDEST PUSH2 0xFB SWAP3 SWAP2 SWAP1 PUSH2 0x15E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x117 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xC0 MSTORE POP PUSH2 0x190 JUMP JUMPDEST PUSH2 0x787 DUP1 PUSH2 0xAA3 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x157 DUP2 PUSH2 0x178 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH2 0x8D5 PUSH2 0x1CE PUSH1 0x0 CODECOPY DUP1 PUSH2 0x523 MSTORE POP DUP1 PUSH2 0x103 MSTORE POP DUP1 PUSH2 0x27C MSTORE DUP1 PUSH2 0x2AC MSTORE POP POP PUSH2 0x8D5 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x5A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0xD4 JUMPI PUSH2 0x5A JUMP JUMPDEST DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0x5F JUMPI DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x8A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74 PUSH2 0x101 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x80E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9D PUSH2 0x98 CALLDATASIZE PUSH1 0x4 PUSH2 0x65B JUMP JUMPDEST PUSH2 0x125 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74 PUSH2 0x2AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0x704 JUMP JUMPDEST PUSH2 0x2CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0x72F JUMP JUMPDEST PUSH2 0x381 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x866 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ADDRESS EQ DUP1 PUSH2 0x147 JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x186 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17D SWAP1 PUSH2 0x82F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x7B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x232 SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x78C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x2A2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 PUSH2 0x393 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x2D7 DUP2 PUSH2 0x41A JUMP JUMPDEST ISZERO PUSH2 0x2E8 JUMPI PUSH2 0x2E5 DUP2 PUSH2 0x461 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH2 0x30C PUSH2 0x2AA JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32A SWAP3 SWAP2 SWAP1 PUSH2 0x7E8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x358 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x37C SWAP2 SWAP1 PUSH2 0x6E8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38C DUP3 PUSH2 0x48C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3BE SWAP2 SWAP1 PUSH2 0x780 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3FB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x400 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x40F DUP3 DUP3 PUSH2 0x4A3 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x46F DUP5 PUSH2 0x48C JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x47C DUP5 PUSH2 0x4CD JUMP JUMPDEST ISZERO PUSH2 0x38C JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x498 DUP4 PUSH2 0x514 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x4B2 JUMPI POP DUP1 PUSH2 0x414 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x4C2 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x414 PUSH2 0x1AE PUSH2 0x590 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x521 DUP4 PUSH2 0x5BD JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x553 SWAP3 SWAP2 SWAP1 PUSH2 0x7A9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x5BA DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x5E0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x670 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x67B DUP2 PUSH2 0x86F JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x68B DUP2 PUSH2 0x891 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6A7 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6BA JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x6C8 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x6D9 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6F9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x38C DUP2 PUSH2 0x891 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x716 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x721 DUP2 PUSH2 0x86F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x740 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x767 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH2 0x74D JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x775 JUMPI DUP3 DUP3 DUP7 ADD MSTORE JUMPDEST POP SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38C DUP3 DUP5 PUSH2 0x747 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x798 DUP3 DUP7 PUSH2 0x747 JUMP JUMPDEST DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x5BA JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH6 0x605C31616641 PUSH15 0xBDCA535A9B92F50D1FF3BCF005744D PUSH22 0x9E1BC200951232ED64736F6C6343000701003360C060 BLOCKHASH MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x787 CODESIZE SUB DUP1 PUSH2 0x787 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH2 0xA3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x64 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x6F DUP2 PUSH2 0x8B JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x80 DUP2 PUSH2 0x8B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x6B3 PUSH2 0xD4 PUSH1 0x0 CODECOPY DUP1 PUSH1 0xFC MSTORE DUP1 PUSH2 0x20F MSTORE POP DUP1 PUSH1 0x58 MSTORE DUP1 PUSH2 0x120 MSTORE POP PUSH2 0x6B3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7678922E EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xC8 JUMPI PUSH2 0x83 JUMP JUMPDEST CALLDATASIZE PUSH2 0x83 JUMPI PUSH2 0x81 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x206 PUSH2 0xE8 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0xFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0x11E JUMP JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x480 JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x52F JUMP JUMPDEST DUP2 PUSH2 0xF6 JUMPI PUSH2 0xF6 DUP2 PUSH2 0x26E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x14C PUSH2 0x29B JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x197 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x182 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x257 JUMPI PUSH2 0x238 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1B4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x5E3 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 SWAP2 POP POP PUSH2 0x2B4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x244 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x19D JUMP JUMPDEST POP PUSH2 0x260 PUSH2 0x337 JUMP JUMPDEST PUSH2 0x268 PUSH2 0x348 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x298 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x34F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x2AD PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x31A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x31F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x32E DUP3 DUP3 PUSH2 0x3CA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH2 0x298 CALLER DUP3 PUSH2 0x3F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x3D9 JUMPI POP DUP1 PUSH2 0x268 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x3E9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x268 PUSH2 0x1AE PUSH2 0x26E JUMP JUMPDEST PUSH2 0x403 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x429 SWAP1 PUSH2 0x50B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x46B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x47B DUP2 PUSH2 0x1A4 PUSH2 0xE8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x492 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4BC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x4CA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x4DD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x501 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x64D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5D6 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP8 MSTORE PUSH2 0x599 DUP2 DUP10 DUP10 ADD DUP11 DUP6 ADD PUSH2 0x64D JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP6 SWAP1 SWAP6 ADD DUP7 ADD SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x554 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x617 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x631 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x668 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x650 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MOD EXTCODEHASH 0xDA 0xAA 0xD6 0xC7 RETURN 0x2F 0xB6 0xDD MSTORE8 CALL STOP 0x26 SWAP11 SWAP15 LOG1 PUSH13 0x7241C4A9587B1F83F82A35B542 TIMESTAMP PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1785:6932:69:-:0;;;7706:42;7657:91;;1964:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2010:5;-1:-1:-1;;;;;2010:10:69;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1450:12:60;;;;;;;;2034:14:69;;;;;::::1;::::0;2072:41:::1;::::0;2043:5;;2107:4:::1;::::0;2072:41:::1;::::0;::::1;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;2058:55:69::1;::::0;-1:-1:-1;;;;;;2058:55:69;::::1;::::0;-1:-1:-1;1785:6932:69;;;;;;;;;;:::o;345:293:-1:-;;475:2;463:9;454:7;450:23;446:32;443:2;;;-1:-1;;481:12;443:2;104:6;98:13;116:48;158:5;116:48;:::i;:::-;533:89;437:201;-1:-1;;;437:201::o;1226:363::-;-1:-1;;;;;1981:54;;;1149:65;;1981:54;;1575:2;1560:18;;1014:37;1396:2;1381:18;;1367:222::o;2335:147::-;-1:-1;;;;;1981:54;;2409:50;;2399:2;;2473:1;;2463:12;2399:2;2393:89;:::o;:::-;1785:6932:69;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"9655":[{"length":32,"start":636},{"length":32,"start":684}],"9657":[{"length":32,"start":259}],"10025":[{"length":32,"start":1315}]},"linkReferences":{},"object":"60806040526004361061005a5760003560e01c80638d928af8116100435780638d928af81461009f578063b6d24737146100b4578063f3cab685146100d45761005a565b80637fd0e5d51461005f57806380db15bd1461008a575b600080fd5b34801561006b57600080fd5b50610074610101565b604051610081919061080e565b60405180910390f35b61009d61009836600461065b565b610125565b005b3480156100ab57600080fd5b506100746102aa565b3480156100c057600080fd5b5061009d6100cf366004610704565b6102ce565b3480156100e057600080fd5b506100f46100ef36600461072f565b610381565b6040516100819190610866565b7f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff8416301480610147575082155b610186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017d9061082f565b60405180910390fd5b606063fa6e671d60e01b3386866040516024016101a5939291906107b7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093525161023292869186910161078c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290506102a273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682610393565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6102d78161041a565b156102e8576102e581610461565b90505b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b361030c6102aa565b836040518363ffffffff1660e01b815260040161032a9291906107e8565b602060405180830381600087803b15801561034457600080fd5b505af1158015610358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037c91906106e8565b505050565b600061038c8261048c565b9392505050565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516103be9190610780565b6000604051808303816000865af19150503d80600081146103fb576040519150601f19603f3d011682016040523d82523d6000602084013e610400565b606091505b509150915061040f82826104a3565b925050505b92915050565b7ffff0000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b600080600061046f8461048c565b9150915061047c846104cd565b1561038c57600082559392505050565b60008061049883610514565b915081549050915091565b606082156104b2575080610414565b8151156104c25781518083602001fd5b6104146101ae610590565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b60006001610521836105bd565b7f00000000000000000000000000000000000000000000000000000000000000006040516020016105539291906107a9565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905280516020909101200392915050565b6105ba817f42414c00000000000000000000000000000000000000000000000000000000006105e0565b50565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60008060008060608587031215610670578384fd5b843561067b8161086f565b9350602085013561068b81610891565b9250604085013567ffffffffffffffff808211156106a7578384fd5b818701915087601f8301126106ba578384fd5b8135818111156106c8578485fd5b8860208285010111156106d9578485fd5b95989497505060200194505050565b6000602082840312156106f9578081fd5b815161038c81610891565b60008060408385031215610716578182fd5b82356107218161086f565b946020939093013593505050565b600060208284031215610740578081fd5b5035919050565b60008151815b81811015610767576020818501810151868301520161074d565b818111156107755782828601525b509290920192915050565b600061038c8284610747565b60006107988286610747565b838582379092019182525092915050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152901515604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff811681146105ba57600080fd5b80151581146105ba57600080fdfea264697066735822122065605c316166416ebdca535a9b92f50d1ff3bcf005744d759e1bc200951232ed64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x5A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0xD4 JUMPI PUSH2 0x5A JUMP JUMPDEST DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0x5F JUMPI DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x8A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74 PUSH2 0x101 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x80E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9D PUSH2 0x98 CALLDATASIZE PUSH1 0x4 PUSH2 0x65B JUMP JUMPDEST PUSH2 0x125 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74 PUSH2 0x2AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0x704 JUMP JUMPDEST PUSH2 0x2CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0x72F JUMP JUMPDEST PUSH2 0x381 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0x866 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ADDRESS EQ DUP1 PUSH2 0x147 JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x186 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17D SWAP1 PUSH2 0x82F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x7B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x232 SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x78C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x2A2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 PUSH2 0x393 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x2D7 DUP2 PUSH2 0x41A JUMP JUMPDEST ISZERO PUSH2 0x2E8 JUMPI PUSH2 0x2E5 DUP2 PUSH2 0x461 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH2 0x30C PUSH2 0x2AA JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32A SWAP3 SWAP2 SWAP1 PUSH2 0x7E8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x358 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x37C SWAP2 SWAP1 PUSH2 0x6E8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38C DUP3 PUSH2 0x48C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3BE SWAP2 SWAP1 PUSH2 0x780 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3FB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x400 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x40F DUP3 DUP3 PUSH2 0x4A3 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x46F DUP5 PUSH2 0x48C JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x47C DUP5 PUSH2 0x4CD JUMP JUMPDEST ISZERO PUSH2 0x38C JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x498 DUP4 PUSH2 0x514 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x4B2 JUMPI POP DUP1 PUSH2 0x414 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x4C2 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x414 PUSH2 0x1AE PUSH2 0x590 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x521 DUP4 PUSH2 0x5BD JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x553 SWAP3 SWAP2 SWAP1 PUSH2 0x7A9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x5BA DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x5E0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x670 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x67B DUP2 PUSH2 0x86F JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x68B DUP2 PUSH2 0x891 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6A7 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x6BA JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x6C8 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x6D9 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6F9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x38C DUP2 PUSH2 0x891 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x716 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x721 DUP2 PUSH2 0x86F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x740 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x767 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH2 0x74D JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x775 JUMPI DUP3 DUP3 DUP7 ADD MSTORE JUMPDEST POP SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38C DUP3 DUP5 PUSH2 0x747 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x798 DUP3 DUP7 PUSH2 0x747 JUMP JUMPDEST DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x5BA JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH6 0x605C31616641 PUSH15 0xBDCA535A9B92F50D1FF3BCF005744D PUSH22 0x9E1BC200951232ED64736F6C63430007010033000000 ","sourceMap":"1785:6932:69:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2220:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2433:466;;;;;;:::i;:::-;;:::i;:::-;;2126:88;;;;;;;;;;;;;:::i;3077:273::-;;;;;;;;;;-1:-1:-1;3077:273:69;;;;;:::i;:::-;;:::i;3525:153::-;;;;;;;;;;-1:-1:-1;3525:153:69;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2220:99::-;2301:11;2220:99;:::o;2433:466::-;2588:24;;;2607:4;2588:24;;:37;;;2617:8;2616:9;2588:37;2580:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;2671:17;2744:34;;;2780:10;2792:7;2801:8;2721:89;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2691:156;;;2824:13;;;;2691:156;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;2858:34:69;:28;2866:6;2858:28;2691:156;2858:28;:34::i;:::-;;2433:466;;;;;:::o;2126:88::-;2201:6;2126:88;:::o;3077:273::-;3159:27;3179:6;3159:19;:27::i;:::-;3155:100;;;3211:33;3237:6;3211:25;:33::i;:::-;3202:42;;3155:100;3301:5;:13;;;3323:10;:8;:10::i;:::-;3336:6;3301:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3077:273;;:::o;3525:153::-;3603:13;3640:31;3667:3;3640:26;:31::i;:::-;3628:43;3525:153;-1:-1:-1;;;3525:153:69:o;3494:278:48:-;3569:12;3653;3667:23;3694:6;:11;;3706:4;3694:17;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3652:59;;;;3728:37;3745:7;3754:10;3728:16;:37::i;:::-;3721:44;;;;3494:278;;;;;:::o;4796:358:69:-;4998:66;4989:75;5081:66;4988:159;;4796:358::o;6626:375::-;6701:7;6721:12;6735:13;6752:31;6779:3;6752:26;:31::i;:::-;6720:63;;;;6798:33;6827:3;6798:28;:33::i;:::-;6794:179;;;6947:1;6941:4;6934:15;6989:5;6626:375;-1:-1:-1;;;6626:375:69:o;7195:404::-;7266:12;7280:13;7312:20;7328:3;7312:15;:20::i;:::-;7305:27;;7578:4;7572:11;7563:20;;7549:44;;;:::o;5057:714:48:-;5145:12;5173:7;5169:596;;;-1:-1:-1;5203:10:48;5196:17;;5169:596;5314:17;;:21;5310:445;;5571:10;5565:17;5631:15;5618:10;5614:2;5610:19;5603:44;5520:145;5703:37;11712:3:14;5703:7:48;:37::i;5271:505:69:-;5620:66;5611:75;5703:66;5610:159;;5271:505::o;7755:595::-;7815:7;8341:1;8286:27;8309:3;8286:22;:27::i;:::-;8315:20;8269:67;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;8259:78;;8269:67;8259:78;;;;8251:91;;7755:595;-1:-1:-1;;7755:595:69:o;1437:126:14:-;1484:28;1492:9;1484:28;:7;:28::i;:::-;1437:126;:::o;8541:174:69:-;8641:66;8635:72;;8541:174::o;1670:3378:14:-;4395:66;1732:18;4383:79;;;4601:66;4595:4;4588:80;4743:1;4737:4;4730:15;2871:2;2904:18;;;2949;;;2876:4;2945:29;;;3747:1;3838:14;2856:18;;;;3827:26;;;;2997:18;;;;3044;;;3040:29;;3859:2;3855:17;3823:50;3737:4;3743:18;;;;;;3733:29;3729:2;3725:38;3802:72;;;;3797:3;3793:82;4810:4;4803:26;1761:14;;;;;5036:3;;5026:14;1070:609:-1;;;;;1224:2;1212:9;1203:7;1199:23;1195:32;1192:2;;;-1:-1;;1230:12;1192:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1282:63;-1:-1;1382:2;1418:22;;206:20;231:30;206:20;231:30;:::i;:::-;1390:60;-1:-1;1515:2;1500:18;;1487:32;1539:18;1528:30;;;1525:2;;;-1:-1;;1561:12;1525:2;1646:6;1635:9;1631:22;;;536:3;529:4;521:6;517:17;513:27;503:2;;-1:-1;;544:12;503:2;587:6;574:20;1539:18;606:6;603:30;600:2;;;-1:-1;;636:12;600:2;731:3;1382:2;711:17;672:6;697:32;;694:41;691:2;;;-1:-1;;738:12;691:2;1186:493;;;;-1:-1;;1382:2;668:17;;-1:-1;;;1186:493::o;1686:257::-;;1798:2;1786:9;1777:7;1773:23;1769:32;1766:2;;;-1:-1;;1804:12;1766:2;354:6;348:13;366:30;390:5;366:30;:::i;1950:396::-;;;2086:2;2074:9;2065:7;2061:23;2057:32;2054:2;;;-1:-1;;2092:12;2054:2;861:6;848:20;873:48;915:5;873:48;:::i;:::-;2144:78;2259:2;2298:22;;;;1000:20;;-1:-1;;;2048:298::o;2353:241::-;;2457:2;2445:9;2436:7;2432:23;2428:32;2425:2;;;-1:-1;;2463:12;2425:2;-1:-1;1000:20;;2419:175;-1:-1;2419:175::o;3476:356::-;;3636:5;8024:12;-1:-1;9918:101;9932:6;9929:1;9926:13;9918:101;;;3780:4;9999:11;;;;;9993:18;9980:11;;;9973:39;9947:10;9918:101;;;10034:6;10031:1;10028:13;10025:2;;;-1:-1;10090:6;10085:3;10081:16;10074:27;10025:2;-1:-1;3811:16;;;;;3584:248;-1:-1;;3584:248::o;4804:271::-;;4957:93;5046:3;5037:6;4957:93;:::i;5082:448::-;;5291:93;5380:3;5371:6;5291:93;:::i;:::-;9773:6;9768:3;9763;9750:30;9811:16;;;9804:27;;;-1:-1;9811:16;5272:258;-1:-1;;5272:258::o;5537:392::-;3065:58;;;5790:2;5781:12;;3065:58;5892:12;;;5681:248::o;5936:464::-;8951:42;8940:54;;;2688:45;;8940:54;;;;6309:2;6294:18;;2688:45;8660:13;;8653:21;6386:2;6371:18;;2930:34;6129:2;6114:18;;6100:300::o;6407:333::-;8951:42;8940:54;;;;2688:45;;6726:2;6711:18;;3065:58;6562:2;6547:18;;6533:207::o;6747:272::-;8951:42;8940:54;;;;3935:75;;6899:2;6884:18;;6870:149::o;7285:416::-;7485:2;7499:47;;;4410:2;7470:18;;;8322:19;4446:33;8362:14;;;4426:54;4499:12;;;7456:245::o;7708:222::-;3065:58;;;7835:2;7820:18;;7806:124::o;10284:117::-;8951:42;10371:5;8940:54;10346:5;10343:35;10333:2;;10392:1;;10382:12;10408:111;10489:5;8660:13;8653:21;10467:5;10464:32;10454:2;;10510:1;;10500:12"},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getEntrypoint()":"7fd0e5d5","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","setRelayerApproval(address,bool,bytes)":"80db15bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEntrypoint\",\"outputs\":[{\"internalType\":\"contract IBalancerRelayer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"authorisation\",\"type\":\"bytes\"}],\"name\":\"setRelayerApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Relayers are composed of two contracts: - A `BalancerRelayer` contract, which acts as a single point of entry into the system through a multicall function - A library contract such as this one, which defines the allowed behaviour of the relayer NOTE: Only the entrypoint contract should be allowlisted by Balancer governance as a relayer, so that the Vault will reject calls from outside the entrypoint context. This contract should neither be allowlisted as a relayer, nor called directly by the user. No guarantees can be made about fund safety when calling this contract in an improper manner.\",\"kind\":\"dev\",\"methods\":{\"approveVault(address,uint256)\":{\"details\":\"This is needed to avoid having to send intermediate tokens back to the user\"},\"peekChainedReferenceValue(uint256)\":{\"details\":\"It does not alter the reference (even if it's marked as temporary).\"}},\"title\":\"Base Relayer Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveVault(address,uint256)\":{\"notice\":\"Approves the Vault to use tokens held in the relayer\"},\"peekChainedReferenceValue(uint256)\":{\"notice\":\"Returns the amount referenced by chained reference `ref`.\"},\"setRelayerApproval(address,bool,bytes)\":{\"notice\":\"Sets whether a particular relayer is authorised to act on behalf of the user\"}},\"notice\":\"Core functionality of a relayer. Allow users to use a signature to approve this contract to take further actions on their behalf.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/BaseRelayerLibrary.sol\":\"BaseRelayerLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":{\"keccak256\":\"0x00d423628736cf6e571187b6327a8ab9fdf947283582345cc6048ca3086b79a0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://919890e34754f13e43d3bc3f6f07674c4db0f2faf4fe7d1e8246d5513628ac72\",\"dweb:/ipfs/QmSqhMvXntJFgP7EmfZKrVG8t3oQqweYg4WWnV1JNnFUTu\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/BalancerRelayer.sol\":{\"keccak256\":\"0xb69401485af333ad66e7cc091da40d25354de1870f64584d017909da9f8a8e7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e34ee5869335a6fede8b62e5ee6f81bd714b88f58fe4bf4d991d44372333627d\",\"dweb:/ipfs/QmQvEA5R5HXbyPYYC3GEeDwqcBAfsU5kLvRiNByyJqVXrx\"]},\"contracts/relayer/BaseRelayerLibrary.sol\":{\"keccak256\":\"0x52c5a0fa32cb38dfe008f6170491ca81fe394cba0fa9d6cbd13ac12fc9b2471a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8716ef72fa4f61bd91d450d5a29771e346e8ed59f30b6a74b53c6d59c0212e03\",\"dweb:/ipfs/QmTqGY7JoMF7WBNzgPFSfhFS3QkYRwEUJq6UJnTxNSnvuJ\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]}},\"version\":1}"}},"contracts/relayer/ERC4626Wrapping.sol":{"ERC4626Wrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapERC4626","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapERC4626","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","unwrapERC4626(address,address,address,uint256,uint256)":"efe69108","wrapERC4626(address,address,address,uint256,uint256)":"6d307ea8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapERC4626\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapERC4626\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"ERC4626Wrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap ERC4626 tokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/ERC4626Wrapping.sol\":\"ERC4626Wrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol\":{\"keccak256\":\"0xcfcb9742bedeceeebb814066f8046522ae6e6440ea87bc265f48db345f586493\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b2a25f7b7621273d0567400ba318317d738cad231aeac8aecd3051d1a484a7c1\",\"dweb:/ipfs/QmeWczGrss48e7hnBkFHThExBnZW57nPUWSLsbS3yiw8o3\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/ERC4626Wrapping.sol\":{\"keccak256\":\"0x17714e11553f44622d97ffc851175ea16f9d70f76b8dd57edfeb9ab26188050e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af9ef5d055e44410a74d45793ea10a165ba6fb7c0982d4b196b0fd05a420c1f5\",\"dweb:/ipfs/QmZD8HPpT87G87AvM3bRpadSWJB4gEHb4dUoU6ZpY8NxJp\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]}},\"version\":1}"}},"contracts/relayer/GaugeActions.sol":{"GaugeActions":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge[]","name":"gauges","type":"address[]"}],"name":"gaugeClaimRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"gaugeDeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"gaugeMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"gaugeSetMinterApproval","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"gaugeWithdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","gaugeClaimRewards(address[])":"0e248fea","gaugeDeposit(address,address,address,uint256)":"7bc008f5","gaugeMint(address[],uint256)":"3f85d390","gaugeSetMinterApproval(bool,address,uint256,uint8,bytes32,bytes32)":"8c57198b","gaugeWithdraw(address,address,address,uint256)":"65ca4804","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"gaugeClaimRewards\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"gaugeDeposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"gaugeMint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"gaugeSetMinterApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"gaugeWithdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"The zero address may be passed as balancerMinter to safely disable features which only exist on mainnet\"}},\"title\":\"GaugeActions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/GaugeActions.sol\":\"GaugeActions\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0x1e5bca6b4fb897adc2458f65aa7abed8499dcf146ac5872c62544d91516867cb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faa81254fe029b7ccd05635d6919da30bcb2114026996d10f6b51fc0e1f5b850\",\"dweb:/ipfs/Qmax3d2kq51xjt6hjYgskuXSrsB3fBZ4LAxBPRDDzbg8XD\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0x286a4b1cb4a632954e58c68baac671fb0dcbd139c5a353b0419088b0de40477c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0b57ab7eadc573d8d23b3668b90412e65182beea79726c1a1b8cb57f76abc74a\",\"dweb:/ipfs/QmfNe6Uu4S4xMDzMktJnGz92MT6zVENi3Rye2AazUcrLL4\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0x6975f1e2199b1d9e4fff7133f9e9ab652e2f378d38551d33393eec50f459574a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2c4b81b8bb50d58afee844cdc06a04bca72b379f51eda3289a9cc4ff97a80dfc\",\"dweb:/ipfs/QmR1b9e6Ku7H3ea4yBGmUznqabtioTkktRWvhZFgRUZWy4\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0x3b9e1e7098293244e9e4b1b1e26f973949bea15e2477115fadf4b5157fcab9de\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cc5542e3a2546434ba0de87e5a3937ef0a7816cda2bc25eaaa7e8ddba2d4e281\",\"dweb:/ipfs/QmNZDUex4e3TdkxLrEyqEyusBpC4xfETwvgrqHUEyGkYNE\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xfdbd854a6467bd4aa3523b47c030858b505f87d39abdfb6e97f020a9c303fd17\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4465839b424de5a8f1b83b1f2a689076ce3d99efe2528336f32945191257abcc\",\"dweb:/ipfs/QmSVS4K9f2UMDpqXBg82r2bUeutUihk1hmYuCvw9iEeLWk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xabf0bcc23e4f5fa8e85af800f53c925e26e104ea13e238ef6762ca8221b382a4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c71e3a291a6343ad77f7b4fb4fe1df4519e6a8b6e9335743f288154ea688584f\",\"dweb:/ipfs/QmSmZ7Jrqw9reCab8H9RHuDPduiXh7YUJY1UgsMYxZ26Zp\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x01a7009af37017ca4e06fec645da25e6a5c75b4c3738a04bd227f92742cfb7ae\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae3267797ca92f4e8286a9f7fc6d59ac03d93046f544ec6740e80c100f4ebe4a\",\"dweb:/ipfs/QmUGa72iyfk54ex9qpHcgpbUcHbHDnghy136nZBkbmEZu5\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0x797adbaaae6b7c50752e62bec5e56b554cdbf1f48b1cbd062f7304ea77330f94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c811af7ea4517079e04d5e53e05b871e838f122faf70e3b47d426204b3c79bde\",\"dweb:/ipfs/QmY2oNRdUCswLSDcptE5zkuiyGg1JRk1YP5zojPqFSWLa4\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0x3d362ad70a19a0307bc9af2b053c4de85a4e0aacf1eb6b1fb5083873b8a62045\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3b141dcb49084bd633c4b95765c57e760deadf484a599e7f8fcbb74a46febe3f\",\"dweb:/ipfs/QmQz9P1bWh8mNQUxz5jdqNqwS226osyCPbQA8DznFspf4f\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/GaugeActions.sol\":{\"keccak256\":\"0x9dc6be73ee966236a21296cacafb9bf7447245c090d056ae773a8b1bd6b3f5c5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fb5257cbd5c63cfbc51f1bbe854c86005a175cd8ef8328f6212ea2ef8d62d338\",\"dweb:/ipfs/QmQhLBUbgucisYiSshMxZotDq23a1Tzwq86mRi6xPQLcZD\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]}},\"version\":1}"}},"contracts/relayer/IBaseRelayerLibrary.sol":{"IBaseRelayerLibrary":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"IBaseRelayerLibrary\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/IBaseRelayerLibrary.sol\":\"IBaseRelayerLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]}},\"version\":1}"}},"contracts/relayer/LidoWrapping.sol":{"LidoWrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"stakeETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"stakeETHAndWrap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapWstETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapStETH","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","stakeETH(address,uint256,uint256)":"2cbec84e","stakeETHAndWrap(address,uint256,uint256)":"1089e5e3","unwrapWstETH(address,address,uint256,uint256)":"db4c0e91","wrapStETH(address,address,uint256,uint256)":"1c982441"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"stakeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"stakeETHAndWrap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapWstETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapStETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"The zero address may be passed as wstETH to safely disable this module\",\"params\":{\"wstETH\":\"- the address of Lido's wrapped stETH contract\"}}},\"title\":\"LidoWrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap stETH\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/LidoWrapping.sol\":\"LidoWrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x2e5cd2e8ce3f3380853a42af5891f787caa27d4aa5f5de0cd18f2f4ecf085f9c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae8aad1c72dd6ad70d9377d8b025af8ff9648fb99fcac4ed101c3ffe9d74c082\",\"dweb:/ipfs/QmQ5A29nCNj72ckV23cCEANomh5tt5UJkL4938GLYPEn4Q\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\":{\"keccak256\":\"0x63ab39ba66fa4d4dd481433cb7e38b3f4b4ef70f93849baa4dbfb505b0a32672\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://96117b89d70c2c7d33072f8d86a7193f22015493e568d0e13e9fdb15b7f912bb\",\"dweb:/ipfs/QmahkTXJxVrCozp3ivzEyh562Fnz3z5oetNiy9AmjugoJr\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]},\"contracts/relayer/LidoWrapping.sol\":{\"keccak256\":\"0xc266b469754fbca3e3e965bb37cc1b8aaba351875ebb6b78146d9780c8c220a9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15ff53a01778985bf203a3ec97f502cf43f7d9ed3792742e24ef0cc4d583a91f\",\"dweb:/ipfs/QmbEVLaL2Fc3v9ak5RKyLZGQ7S8JNsY8beQkerGmFiVL7L\"]}},\"version\":1}"}},"contracts/relayer/ReaperWrapping.sol":{"ReaperWrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IReaperTokenVault","name":"vaultToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapReaperVaultToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IReaperTokenVault","name":"vaultToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapReaperVaultToken","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","unwrapReaperVaultToken(address,address,address,uint256,uint256)":"d293f290","wrapReaperVaultToken(address,address,address,uint256,uint256)":"e8210e3c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IReaperTokenVault\",\"name\":\"vaultToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapReaperVaultToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IReaperTokenVault\",\"name\":\"vaultToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapReaperVaultToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so that it can be called as part of a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"ReaperWrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap Reapers's rfTokens into their underlying main tokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/ReaperWrapping.sol\":\"ReaperWrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol\":{\"keccak256\":\"0xe57447223cab81039085813da021bd12552b1b27f3c7c03031b87f39b390bec3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c0a50b3ea4244e80eb180d4e6b94e7a56c9bee394ac89d085b19ff194fc10dbe\",\"dweb:/ipfs/QmYa7jzRRhjMLqrKrL8bCDX3rc5RU2rzhZ7Df7Z5r6S6L9\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]},\"contracts/relayer/ReaperWrapping.sol\":{\"keccak256\":\"0xf0194c405041c6fc22c51490bf1b1ad827eec697d17399fdaff28fd6ee38de0d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4f82e83a1be01b9da7c0ad4ebf0e4114be60e08a8e4230f346644ca78645c3f4\",\"dweb:/ipfs/QmZzrxgtYrh7ruxB3jW3RcXxgB7rmpWWsUQsnZuo1gLk9N\"]}},\"version\":1}"}},"contracts/relayer/UnbuttonWrapping.sol":{"UnbuttonWrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IUnbuttonToken","name":"wrapperToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapUnbuttonToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUnbuttonToken","name":"wrapperToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapUnbuttonToken","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","unwrapUnbuttonToken(address,address,address,uint256,uint256)":"611b90dd","wrapUnbuttonToken(address,address,address,uint256,uint256)":"abf6d399"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUnbuttonToken\",\"name\":\"wrapperToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapUnbuttonToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUnbuttonToken\",\"name\":\"wrapperToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapUnbuttonToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"@aalavandhan1984 (eng@fragments.org)\",\"details\":\"All functions must be payable so that it can be called as part of a multicall involving ETH. The rebasing token to be wrapped is called the \\\"underlying\\\" token. The wrapped non-rebasing token is called the \\\"wrapped\\\" token. Learn more: https://github.com/buttonwood-protocol/button-wrappers/blob/main/contracts/UnbuttonToken.sol\",\"kind\":\"dev\",\"methods\":{\"unwrapUnbuttonToken(address,address,address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of wrapped tokens to be burnt for underlying tokens.\",\"outputReference\":\"Chained output reference.\",\"sender\":\"The address of recepient.\",\"wrapperToken\":\"The address of the wrapper.\"}},\"wrapUnbuttonToken(address,address,address,uint256,uint256)\":{\"params\":{\"outputReference\":\"Chained output reference.\",\"sender\":\"The address of recepient.\",\"uAmount\":\"The underling token amount to be deposited into the wrapper.\",\"wrapperToken\":\"The address of the wrapper.\"}}},\"title\":\"UnbuttonWrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap any rebasing elastic balance token into a a non-rebasing static balance version using the Unbutton wrapper.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/UnbuttonWrapping.sol\":\"UnbuttonWrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol\":{\"keccak256\":\"0xc82d42ae8b0d8beecd14924f2719b24bc602d1e8df4365dfb0cc3f63a32cb179\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a61895cdecdc5fe04ad2495dfc80a4ce438b4d42d21995739e3e225cbb786582\",\"dweb:/ipfs/QmSYVb7NwdPMXxdsvGYhWyvKNbdrP4fWRGvsygdCj5SZMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol\":{\"keccak256\":\"0x6ea477094e5c51c7f6bc107e13503fbe18db2b22b61909a2ff08106e374b0e72\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1eb6e93ae0e2758c85121bcd61226211a1f1996944c1849eafc8d30e5f7364af\",\"dweb:/ipfs/QmcTJAa437Mk9YxiXWnhKP2sVYHFEgwrjnrA6ubzJtuhFV\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]},\"contracts/relayer/UnbuttonWrapping.sol\":{\"keccak256\":\"0x3662f72fb154f14480236ddc02b20ac6f2d6668d7ee496c1f1f6d1939733d337\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://aa905d62594d8fb29d7689dd00f32ed84db63d8eb759fa182d77a9888e9e8bb5\",\"dweb:/ipfs/QmQ6BHqFGeHpijUKjCmgWe7jyQcr6kjSTahzbUvs5EbEp8\"]}},\"version\":1}"}},"contracts/relayer/VaultActions.sol":{"VaultActions":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"int256[]","name":"limits","type":"int256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"batchSwap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum VaultActions.PoolKind","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"exitPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum VaultActions.PoolKind","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"joinPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"enum IVault.UserBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"}],"internalType":"struct IVault.UserBalanceOp[]","name":"ops","type":"tuple[]"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manageUserBalance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256,uint256,(uint256,uint256)[])":"18369446","exitPool(bytes32,uint8,address,address,(address[],uint256[],bytes,bool),(uint256,uint256)[])":"d80952d5","getVault()":"8d928af8","joinPool(bytes32,uint8,address,address,(address[],uint256[],bytes,bool),uint256,uint256)":"8fe4624f","manageUserBalance((uint8,address,uint256,address,address)[],uint256)":"ecc02637","peekChainedReferenceValue(uint256)":"f3cab685","swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256,uint256,uint256)":"2e6272ea"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"int256[]\",\"name\":\"limits\",\"type\":\"int256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"batchSwap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum VaultActions.PoolKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum VaultActions.PoolKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"joinPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.UserBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct IVault.UserBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manageUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Since the relayer is not expected to hold user funds, we expect the user to be the recipient of any token transfers from the Vault. All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"VaultActions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to call the core functions on the Balancer Vault (swaps/joins/exits/user balance management)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/VaultActions.sol\":\"VaultActions\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":{\"keccak256\":\"0x77711c8f7dffb3ec7c6ade6aa8130dfcf905920e1f4de2cc14a8869f356c1e7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0d7b48b6172bc6ece5bb47acab7541c0e7bafe0c05b77c36231fd9d0563669ff\",\"dweb:/ipfs/QmQoqo3qshSWXD3PwkhEoLzfcZEv56zpYKAtzXEyh8h3oo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\":{\"keccak256\":\"0xe34a73f883e96c7fef1750edc94b7940f0ac0fd3b43feae13cb7cde0da130c66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://027cf01075479e0a51f17678431e215d17f23773c5cb66c59ddaa6d052f5cbda\",\"dweb:/ipfs/QmPFaTfNLoKkufU6n9Q8n1k2R2WCT1vTRosNXJS4sm8WxQ\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xa50a6030616fb98d27463df96d3bd9386c157ecae82c7a71be7e0b7ba778d02f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51dbb7eeb98561aaf6cf6b48825a64a725f5d1d63cfd888711c4cb1468f52fc4\",\"dweb:/ipfs/Qmc2o8dUCBuu8PxJPrPufHmoZ6DGdMPoaXcruUqr3WuCLA\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]},\"contracts/relayer/VaultActions.sol\":{\"keccak256\":\"0x777d58a20e0e7f71eea9dc59f936f78528c02037a47076ad0747a6cb15e2e42b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://837ae5259458637d2dcb23b1f0d7bda936a50745cb36a1d4211f2dc50f3caaaf\",\"dweb:/ipfs/QmaS4wwWtbZVkG8bVqSWRHn47MPfnRHL8eUfd8Z8FchAYC\"]}},\"version\":1}"}},"contracts/relayer/VaultPermit.sol":{"VaultPermit":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20Permit","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"vaultPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20PermitDAI","name":"token","type":"address"},{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"vaultPermitDAI","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","vaultPermit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"8d64cfbc","vaultPermitDAI(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)":"959fc17a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Permit\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"vaultPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20PermitDAI\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"vaultPermitDAI\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"VaultPermit\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to use permit (where supported) to approve the Balancer Vault to use their tokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/VaultPermit.sol\":\"VaultPermit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xffe929ce55ef0cbdcc60eee8bc9375c295757ad13afe3d757646538aa0429ff5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90091ad3a860b0baa930d9b4083b503eb9ce2d222f738ce3b009d434271a27ae\",\"dweb:/ipfs/QmeQxy2YHbeumMXxKqEnXF7pGw2Ke43cHzttG59WYHibVV\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol\":{\"keccak256\":\"0x5a824b0b4eef59b949b7ed26f74a5ad6a636b8ac093bde3a5c7b8a4e1fb1a6c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a89b0cf610d119abd21b5fd8a44ce2641b3ff99d20ace39609ce8df361686597\",\"dweb:/ipfs/QmZzyKTWdEftt1oJZEoj9zgXACTLZNvwQJmFZQQQrzfDgn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]},\"contracts/relayer/VaultPermit.sol\":{\"keccak256\":\"0xef4705f6cdd5833cfff67df26d4b1c360b153d59429064f005b397f2a5a1b9b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9cad4c5a1c93580fdf0f39077b1efa48d14af4bce872ea89aea2ad58fd9592b2\",\"dweb:/ipfs/QmTHkG1hQugzT9B7D1nfLbD96TDiJ9YXSemVQFJX4T8agZ\"]}},\"version\":1}"}},"contracts/relayer/special/DoubleEntrypointFixRelayer.sol":{"DoubleEntrypointFixRelayer":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BTC_STABLE_POOL_ADDRESS","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BTC_STABLE_POOL_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNX","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNX_IMPLEMENTATION","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNX_WEIGHTED_POOL_ADDRESS","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNX_WEIGHTED_POOL_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exitBTCStablePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exitSNXWeightedPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"receiveFlashLoan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renBTC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sBTC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sBTC_IMPLEMENTATION","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"sweepDoubleEntrypointToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sweepSNXsBTC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wBTC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c06040523480156200001157600080fd5b5060405162001b7e38038062001b7e8339810160408190526200003491620000dd565b806001600160a01b03166080816001600160a01b031660601b81525050806001600160a01b031663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200008b57600080fd5b505afa158015620000a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c69190620000dd565b60601b6001600160601b03191660a052506200011c565b600060208284031215620000ef578081fd5b8151620000fc8162000103565b9392505050565b6001600160a01b03811681146200011957600080fd5b50565b60805160601c60a05160601c611a15620001696000398061077c5280610ccf52806110e252508061025c528061033c5280610a505280610f595280610f8652806111135250611a156000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80639b452931116100b2578063e043f56f11610081578063e8d6101e11610066578063e8d6101e146101c0578063f04f2707146101c8578063fd6ea58d146101db5761011b565b8063e043f56f146101b0578063e4231540146101b85761011b565b80639b45293114610190578063a2abb55f14610198578063ad5c4648146101a0578063cbc87782146101a85761011b565b80635fbc1031116100ee5780635fbc10311461017057806369af9c7e146101785780636ad3aaa4146101805780638d928af8146101885761011b565b80630306ae12146101205780630a5e13dc146101355780635dc80bd0146101535780635f5fb03614610168575b600080fd5b61013361012e3660046114a3565b6101e3565b005b61013d6103ab565b60405161014a9190611714565b60405180910390f35b61015b6103c3565b60405161014a91906117a7565b6101336103e7565b61013d6105ad565b6101336105c5565b61013d610a36565b61013d610a4e565b61013d610a72565b61013d610a8a565b61013d610aa2565b610133610aba565b61013d610eea565b61015b610f02565b61013d610f26565b6101336101d63660046114de565b610f3e565b61013d610ffa565b6060815167ffffffffffffffff811180156101fd57600080fd5b50604051908082528060200260200182016040528015610227578160200160208202803683370190505b5090508160008151811061023757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016102979190611714565b60206040518083038186803b1580156102af57600080fd5b505afa1580156102c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e79190611611565b816000815181106102f457fe5b60209081029190910101526040517f5c38449e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635c38449e90610375903090869086906004016118aa565b600060405180830381600087803b15801561038f57600080fd5b505af11580156103a3573d6000803e3d6000fd5b505050505050565b73072f14b85add63488ddad88f855fda4a99d6ac9b81565b7f072f14b85add63488ddad88f855fda4a99d6ac9b00020000000000000000002781565b604080516002808252606080830184529260208301908036833701905050905073639032d3900875a4cf4960ad6b9ee441657aa93c8160008151811061042957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f8160018151811061048557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506104c8816101e3565b60408051600280825260608083018452926020830190803683370190505090507318fcc34bdeaaf9e3b69d2500343527c0c995b1d68160008151811061050a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc68160018151811061056657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506105a9816101e3565b5050565b73eb4c2781e4eba804ce9a9803c67d0893436bb27d81565b604080516002808252606080830184529260208301908036833701905050905073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f8160008151811061060757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061066357fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073072f14b85add63488ddad88f855fda4a99d6ac9b906370a08231906106db903390600401611714565b60206040518083038186803b1580156106f357600080fd5b505afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190611611565b6040517f70a082310000000000000000000000000000000000000000000000000000000081529091506107f99073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f9081906370a08231906107a4907f000000000000000000000000000000000000000000000000000000000000000090600401611714565b60206040518083038186803b1580156107bc57600080fd5b505afa1580156107d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f49190611611565b611012565b606060018260405160200161080f92919061192d565b604051602081830303815290604052905061082861137f565b604051806080016040528061083c86611173565b8152602001855167ffffffffffffffff8111801561085957600080fd5b50604051908082528060200260200182016040528015610883578160200160208202803683370190505b508152602081018490526000604090910152905061089f610a4e565b6040517f8bdb391300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911690638bdb391390610919907f072f14b85add63488ddad88f855fda4a99d6ac9b000200000000000000000027903390819087906004016117b0565b600060405180830381600087803b15801561093357600080fd5b505af1158015610947573d6000803e3d6000fd5b50506040805160028082526060808301845294509092509060208301908036833701905050905073639032d3900875a4cf4960ad6b9ee441657aa93c8160008151811061099057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f816001815181106109ec57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610a2f816101e3565b5050505050565b7318fcc34bdeaaf9e3b69d2500343527c0c995b1d681565b7f000000000000000000000000000000000000000000000000000000000000000090565b732260fac5e5542a773aa44fbcfedf7c193bc2c59981565b73639032d3900875a4cf4960ad6b9ee441657aa93c81565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b60408051600380825260808201909252606091602082018380368337019050509050732260fac5e5542a773aa44fbcfedf7c193bc2c59981600081518110610afe57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073eb4c2781e4eba804ce9a9803c67d0893436bb27d81600181518110610b5a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc681600281518110610bb657fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073feadd389a5c427952d8fdb8057d6c8ba1156cc56906370a0823190610c2e903390600401611714565b60206040518083038186803b158015610c4657600080fd5b505afa158015610c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7e9190611611565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152909150610cf79073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc69081906370a08231906107a4907f000000000000000000000000000000000000000000000000000000000000000090600401611714565b6060600182604051602001610d0d929190611945565b6040516020818303038152906040529050610d2661137f565b6040518060800160405280610d3a86611173565b8152602001855167ffffffffffffffff81118015610d5757600080fd5b50604051908082528060200260200182016040528015610d81578160200160208202803683370190505b5081526020810184905260006040909101529050610d9d610a4e565b6040517f8bdb391300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911690638bdb391390610e17907ffeadd389a5c427952d8fdb8057d6c8ba1156cc56000000000000000000000066903390819087906004016117b0565b600060405180830381600087803b158015610e3157600080fd5b505af1158015610e45573d6000803e3d6000fd5b5050604080516002808252606080830184529450909250906020830190803683370190505090507318fcc34bdeaaf9e3b69d2500343527c0c995b1d681600081518110610e8e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc6816001815181106109ec57fe5b73fe18be6b3bd88a2d2a7f928d00292e7a9963cfc681565b7ffeadd389a5c427952d8fdb8057d6c8ba1156cc5600000000000000000000006681565b73c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f81565b610f813373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161460cd611176565b610ff47f000000000000000000000000000000000000000000000000000000000000000084600081518110610fb257fe5b602002602001015186600081518110610fc757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166111849092919063ffffffff16565b50505050565b73feadd389a5c427952d8fdb8057d6c8ba1156cc5681565b60408051600180825281830190925260609160208083019080368337019050509050828160008151811061104257fe5b73ffffffffffffffffffffffffffffffffffffffff9290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050828160008151811061109a57fe5b60209081029190910101526040517f6daefab600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636daefab69061113b90859085907f00000000000000000000000000000000000000000000000000000000000000009060040161175b565b600060405180830381600087803b15801561115557600080fd5b505af1158015611169573d6000803e3d6000fd5b5050505050505050565b90565b816105a9576105a98161122a565b6112258363a9059cbb60e01b84846040516024016111a3929190611735565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611257565b505050565b611254817f42414c0000000000000000000000000000000000000000000000000000000000611304565b50565b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161128091906116f8565b6000604051808303816000865af19150503d80600081146112bd576040519150601f19603f3d011682016040523d82523d6000602084013e6112c2565b606091505b509150915060008214156112da573d6000803e3d6000fd5b610ff48151600014806112fc5750818060200190518101906112fc91906115ea565b6101a2611176565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60405180608001604052806060815260200160608152602001606081526020016000151581525090565b600082601f8301126113b9578081fd5b81356113cc6113c78261197a565b611953565b8181529150602080830190848101818402860182018710156113ed57600080fd5b6000805b8581101561142e57823573ffffffffffffffffffffffffffffffffffffffff8116811461141c578283fd5b855293830193918301916001016113f1565b50505050505092915050565b600082601f83011261144a578081fd5b81356114586113c78261197a565b81815291506020808301908481018184028601820187101561147957600080fd5b60005b848110156114985781358452928201929082019060010161147c565b505050505092915050565b6000602082840312156114b4578081fd5b813567ffffffffffffffff8111156114ca578182fd5b6114d6848285016113a9565b949350505050565b600080600080608085870312156114f3578283fd5b843567ffffffffffffffff8082111561150a578485fd5b611516888389016113a9565b955060209150818701358181111561152c578586fd5b61153889828a0161143a565b95505060408701358181111561154c578485fd5b61155889828a0161143a565b94505060608701358181111561156c578384fd5b8701601f8101891361157c578384fd5b80358281111561158a578485fd5b6115ba847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611953565b925080835289848284010111156115cf578485fd5b80848301858501378201909201929092525092959194509250565b6000602082840312156115fb578081fd5b8151801515811461160a578182fd5b9392505050565b600060208284031215611622578081fd5b5051919050565b6000815180845260208085019450808401835b8381101561166e57815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010161163c565b509495945050505050565b6000815180845260208085019450808401835b8381101561166e5781518752958201959082019060010161168c565b15159052565b600081518084526116c68160208601602086016119b3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161170a8184602087016119b3565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60006060825261176e6060830186611629565b82810360208401526117808186611679565b91505073ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b90815260200190565b6000858252602073ffffffffffffffffffffffffffffffffffffffff8087168285015280861660408501525060806060840152610100830184516080808601528181518084526101208701915084830193508592505b8083101561182e57611818845161199a565b8252928401926001929092019190840190611806565b508387015193507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809250828682030160a087015261186c8185611679565b935050506040850151818584030160c086015261188983826116ae565b92505050606084015161189f60e08501826116a8565b509695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff85168252608060208301526118d96080830185611629565b82810360408401526118eb8185611679565b8381036060909401939093525050600281527f307800000000000000000000000000000000000000000000000000000000000060208201526040019392505050565b604081016004841061193b57fe5b9281526020015290565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561197257600080fd5b604052919050565b600067ffffffffffffffff821115611990578081fd5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff1690565b60005b838110156119ce5781810151838201526020016119b6565b83811115610ff4575050600091015256fea2646970667358221220b2437461d0397f426b2436b253792d08921e6184fd8fba18295fb51c92e9ee4364736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1B7E CODESIZE SUB DUP1 PUSH3 0x1B7E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0xDD JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD2946C2B 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 PUSH3 0xC6 SWAP2 SWAP1 PUSH3 0xDD JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE POP PUSH3 0x11C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xEF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0xFC DUP2 PUSH3 0x103 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x119 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x1A15 PUSH3 0x169 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x77C MSTORE DUP1 PUSH2 0xCCF MSTORE DUP1 PUSH2 0x10E2 MSTORE POP DUP1 PUSH2 0x25C MSTORE DUP1 PUSH2 0x33C MSTORE DUP1 PUSH2 0xA50 MSTORE DUP1 PUSH2 0xF59 MSTORE DUP1 PUSH2 0xF86 MSTORE DUP1 PUSH2 0x1113 MSTORE POP PUSH2 0x1A15 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x11B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9B452931 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xE043F56F GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xE8D6101E GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xE8D6101E EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0xF04F2707 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xFD6EA58D EQ PUSH2 0x1DB JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0xE043F56F EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xE4231540 EQ PUSH2 0x1B8 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x9B452931 EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xA2ABB55F EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xCBC87782 EQ PUSH2 0x1A8 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x5FBC1031 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x5FBC1031 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x69AF9C7E EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0x6AD3AAA4 EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x188 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x306AE12 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0xA5E13DC EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x5DC80BD0 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x5F5FB036 EQ PUSH2 0x168 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x133 PUSH2 0x12E CALLDATASIZE PUSH1 0x4 PUSH2 0x14A3 JUMP JUMPDEST PUSH2 0x1E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13D PUSH2 0x3AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14A SWAP2 SWAP1 PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15B PUSH2 0x3C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14A SWAP2 SWAP1 PUSH2 0x17A7 JUMP JUMPDEST PUSH2 0x133 PUSH2 0x3E7 JUMP JUMPDEST PUSH2 0x13D PUSH2 0x5AD JUMP JUMPDEST PUSH2 0x133 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA36 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA4E JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA72 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA8A JUMP JUMPDEST PUSH2 0x13D PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x133 PUSH2 0xABA JUMP JUMPDEST PUSH2 0x13D PUSH2 0xEEA JUMP JUMPDEST PUSH2 0x15B PUSH2 0xF02 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xF26 JUMP JUMPDEST PUSH2 0x133 PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x14DE JUMP JUMPDEST PUSH2 0xF3E JUMP JUMPDEST PUSH2 0x13D PUSH2 0xFFA JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x227 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x237 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x297 SWAP2 SWAP1 PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2E7 SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2F4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x5C38449E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x5C38449E SWAP1 PUSH2 0x375 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x18AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B DUP2 JUMP JUMPDEST PUSH32 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B000200000000000000000027 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x639032D3900875A4CF4960AD6B9EE441657AA93C DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x429 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x485 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0x4C8 DUP2 PUSH2 0x1E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x18FCC34BDEAAF9E3B69D2500343527C0C995B1D6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x50A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x566 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0x5A9 DUP2 PUSH2 0x1E3 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xEB4C2781E4EBA804CE9A9803C67D0893436BB27D DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x607 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x663 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x6DB SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x707 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x72B SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH2 0x7F9 SWAP1 PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F SWAP1 DUP2 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x7A4 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x7F4 SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH2 0x1012 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x80F SWAP3 SWAP2 SWAP1 PUSH2 0x192D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0x828 PUSH2 0x137F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x83C DUP7 PUSH2 0x1173 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x859 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x883 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 POP PUSH2 0x89F PUSH2 0xA4E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8BDB391300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x8BDB3913 SWAP1 PUSH2 0x919 SWAP1 PUSH32 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B000200000000000000000027 SWAP1 CALLER SWAP1 DUP2 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x17B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x947 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x639032D3900875A4CF4960AD6B9EE441657AA93C DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x990 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x9EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0xA2F DUP2 PUSH2 0x1E3 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH20 0x18FCC34BDEAAF9E3B69D2500343527C0C995B1D6 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0x2260FAC5E5542A773AA44FBCFEDF7C193BC2C599 DUP2 JUMP JUMPDEST PUSH20 0x639032D3900875A4CF4960AD6B9EE441657AA93C DUP2 JUMP JUMPDEST PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP3 ADD DUP4 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x2260FAC5E5542A773AA44FBCFEDF7C193BC2C599 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xAFE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xEB4C2781E4EBA804CE9A9803C67D0893436BB27D DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xB5A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0xBB6 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xC2E SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xC7E SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH2 0xCF7 SWAP1 PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 SWAP1 DUP2 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x7A4 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD0D SWAP3 SWAP2 SWAP1 PUSH2 0x1945 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0xD26 PUSH2 0x137F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xD3A DUP7 PUSH2 0x1173 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xD57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD81 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 POP PUSH2 0xD9D PUSH2 0xA4E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8BDB391300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x8BDB3913 SWAP1 PUSH2 0xE17 SWAP1 PUSH32 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56000000000000000000000066 SWAP1 CALLER SWAP1 DUP2 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x17B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x18FCC34BDEAAF9E3B69D2500343527C0C995B1D6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xE8E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x9EC JUMPI INVALID JUMPDEST PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 JUMP JUMPDEST PUSH32 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56000000000000000000000066 DUP2 JUMP JUMPDEST PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 JUMP JUMPDEST PUSH2 0xF81 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH1 0xCD PUSH2 0x1176 JUMP JUMPDEST PUSH2 0xFF4 PUSH32 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xFB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xFC7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1184 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1042 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x109A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x6DAEFAB600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6DAEFAB6 SWAP1 PUSH2 0x113B SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x175B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1155 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1169 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x5A9 JUMPI PUSH2 0x5A9 DUP2 PUSH2 0x122A JUMP JUMPDEST PUSH2 0x1225 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x11A3 SWAP3 SWAP2 SWAP1 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x1257 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1254 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1304 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1280 SWAP2 SWAP1 PUSH2 0x16F8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x12BD JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x12C2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x12DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0xFF4 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x12FC JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x12FC SWAP2 SWAP1 PUSH2 0x15EA JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1176 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x13B9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13CC PUSH2 0x13C7 DUP3 PUSH2 0x197A JUMP JUMPDEST PUSH2 0x1953 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x13ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x142E JUMPI DUP3 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x141C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x13F1 JUMP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x144A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1458 PUSH2 0x13C7 DUP3 PUSH2 0x197A JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1498 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x147C JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14B4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14CA JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x14D6 DUP5 DUP3 DUP6 ADD PUSH2 0x13A9 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x14F3 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x150A JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1516 DUP9 DUP4 DUP10 ADD PUSH2 0x13A9 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 SWAP2 POP DUP2 DUP8 ADD CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x152C JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x1538 DUP10 DUP3 DUP11 ADD PUSH2 0x143A JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x154C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1558 DUP10 DUP3 DUP11 ADD PUSH2 0x143A JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x156C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP8 ADD PUSH1 0x1F DUP2 ADD DUP10 SGT PUSH2 0x157C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP1 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x158A JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x15BA DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x1953 JUMP JUMPDEST SWAP3 POP DUP1 DUP4 MSTORE DUP10 DUP5 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0x15CF JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 DUP5 DUP4 ADD DUP6 DUP6 ADD CALLDATACOPY DUP3 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15FB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x160A JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1622 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x166E JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x163C JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x166E JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x168C JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x16C6 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x19B3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x170A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x19B3 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 MSTORE PUSH2 0x176E PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1629 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1780 DUP2 DUP7 PUSH2 0x1679 JUMP JUMPDEST SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 MSTORE PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP3 DUP6 ADD MSTORE DUP1 DUP7 AND PUSH1 0x40 DUP6 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x100 DUP4 ADD DUP5 MLOAD PUSH1 0x80 DUP1 DUP7 ADD MSTORE DUP2 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x120 DUP8 ADD SWAP2 POP DUP5 DUP4 ADD SWAP4 POP DUP6 SWAP3 POP JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0x182E JUMPI PUSH2 0x1818 DUP5 MLOAD PUSH2 0x199A JUMP JUMPDEST DUP3 MSTORE SWAP3 DUP5 ADD SWAP3 PUSH1 0x1 SWAP3 SWAP1 SWAP3 ADD SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x1806 JUMP JUMPDEST POP DUP4 DUP8 ADD MLOAD SWAP4 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 SWAP3 POP DUP3 DUP7 DUP3 SUB ADD PUSH1 0xA0 DUP8 ADD MSTORE PUSH2 0x186C DUP2 DUP6 PUSH2 0x1679 JUMP JUMPDEST SWAP4 POP POP POP PUSH1 0x40 DUP6 ADD MLOAD DUP2 DUP6 DUP5 SUB ADD PUSH1 0xC0 DUP7 ADD MSTORE PUSH2 0x1889 DUP4 DUP3 PUSH2 0x16AE JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x60 DUP5 ADD MLOAD PUSH2 0x189F PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x16A8 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP3 MSTORE PUSH1 0x80 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x18D9 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x1629 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x18EB DUP2 DUP6 PUSH2 0x1679 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x60 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP4 MSTORE POP POP PUSH1 0x2 DUP2 MSTORE PUSH32 0x3078000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH1 0x4 DUP5 LT PUSH2 0x193B JUMPI INVALID JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1990 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x19CE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19B6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xFF4 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB2 NUMBER PUSH21 0x61D0397F426B2436B253792D08921E6184FD8FBA18 0x29 0x5F 0xB5 SHR SWAP3 0xE9 0xEE NUMBER PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1472:6809:78:-:0;;;3050:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3095:5;-1:-1:-1;;;;;3086:14:78;;;-1:-1:-1;;;;;3086:14:78;;;;;;;3134:5;-1:-1:-1;;;;;3134:30:78;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3110:56;;-1:-1:-1;;;;;;3110:56:78;;;-1:-1:-1;1472:6809:78;;379:325:-1;;525:2;513:9;504:7;500:23;496:32;493:2;;;-1:-1;;531:12;493:2;120:6;114:13;132:64;190:5;132:64;:::i;:::-;583:105;487:217;-1:-1;;;487:217::o;1479:179::-;-1:-1;;;;;1413:54;;1569:66;;1559:2;;1649:1;;1639:12;1559:2;1553:105;:::o;:::-;1472:6809:78;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"12319":[{"length":32,"start":604},{"length":32,"start":828},{"length":32,"start":2640},{"length":32,"start":3929},{"length":32,"start":3974},{"length":32,"start":4371}],"12321":[{"length":32,"start":1916},{"length":32,"start":3279},{"length":32,"start":4322}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061011b5760003560e01c80639b452931116100b2578063e043f56f11610081578063e8d6101e11610066578063e8d6101e146101c0578063f04f2707146101c8578063fd6ea58d146101db5761011b565b8063e043f56f146101b0578063e4231540146101b85761011b565b80639b45293114610190578063a2abb55f14610198578063ad5c4648146101a0578063cbc87782146101a85761011b565b80635fbc1031116100ee5780635fbc10311461017057806369af9c7e146101785780636ad3aaa4146101805780638d928af8146101885761011b565b80630306ae12146101205780630a5e13dc146101355780635dc80bd0146101535780635f5fb03614610168575b600080fd5b61013361012e3660046114a3565b6101e3565b005b61013d6103ab565b60405161014a9190611714565b60405180910390f35b61015b6103c3565b60405161014a91906117a7565b6101336103e7565b61013d6105ad565b6101336105c5565b61013d610a36565b61013d610a4e565b61013d610a72565b61013d610a8a565b61013d610aa2565b610133610aba565b61013d610eea565b61015b610f02565b61013d610f26565b6101336101d63660046114de565b610f3e565b61013d610ffa565b6060815167ffffffffffffffff811180156101fd57600080fd5b50604051908082528060200260200182016040528015610227578160200160208202803683370190505b5090508160008151811061023757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016102979190611714565b60206040518083038186803b1580156102af57600080fd5b505afa1580156102c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e79190611611565b816000815181106102f457fe5b60209081029190910101526040517f5c38449e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635c38449e90610375903090869086906004016118aa565b600060405180830381600087803b15801561038f57600080fd5b505af11580156103a3573d6000803e3d6000fd5b505050505050565b73072f14b85add63488ddad88f855fda4a99d6ac9b81565b7f072f14b85add63488ddad88f855fda4a99d6ac9b00020000000000000000002781565b604080516002808252606080830184529260208301908036833701905050905073639032d3900875a4cf4960ad6b9ee441657aa93c8160008151811061042957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f8160018151811061048557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506104c8816101e3565b60408051600280825260608083018452926020830190803683370190505090507318fcc34bdeaaf9e3b69d2500343527c0c995b1d68160008151811061050a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc68160018151811061056657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506105a9816101e3565b5050565b73eb4c2781e4eba804ce9a9803c67d0893436bb27d81565b604080516002808252606080830184529260208301908036833701905050905073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f8160008151811061060757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061066357fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073072f14b85add63488ddad88f855fda4a99d6ac9b906370a08231906106db903390600401611714565b60206040518083038186803b1580156106f357600080fd5b505afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190611611565b6040517f70a082310000000000000000000000000000000000000000000000000000000081529091506107f99073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f9081906370a08231906107a4907f000000000000000000000000000000000000000000000000000000000000000090600401611714565b60206040518083038186803b1580156107bc57600080fd5b505afa1580156107d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f49190611611565b611012565b606060018260405160200161080f92919061192d565b604051602081830303815290604052905061082861137f565b604051806080016040528061083c86611173565b8152602001855167ffffffffffffffff8111801561085957600080fd5b50604051908082528060200260200182016040528015610883578160200160208202803683370190505b508152602081018490526000604090910152905061089f610a4e565b6040517f8bdb391300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911690638bdb391390610919907f072f14b85add63488ddad88f855fda4a99d6ac9b000200000000000000000027903390819087906004016117b0565b600060405180830381600087803b15801561093357600080fd5b505af1158015610947573d6000803e3d6000fd5b50506040805160028082526060808301845294509092509060208301908036833701905050905073639032d3900875a4cf4960ad6b9ee441657aa93c8160008151811061099057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f816001815181106109ec57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610a2f816101e3565b5050505050565b7318fcc34bdeaaf9e3b69d2500343527c0c995b1d681565b7f000000000000000000000000000000000000000000000000000000000000000090565b732260fac5e5542a773aa44fbcfedf7c193bc2c59981565b73639032d3900875a4cf4960ad6b9ee441657aa93c81565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b60408051600380825260808201909252606091602082018380368337019050509050732260fac5e5542a773aa44fbcfedf7c193bc2c59981600081518110610afe57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073eb4c2781e4eba804ce9a9803c67d0893436bb27d81600181518110610b5a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc681600281518110610bb657fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073feadd389a5c427952d8fdb8057d6c8ba1156cc56906370a0823190610c2e903390600401611714565b60206040518083038186803b158015610c4657600080fd5b505afa158015610c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7e9190611611565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152909150610cf79073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc69081906370a08231906107a4907f000000000000000000000000000000000000000000000000000000000000000090600401611714565b6060600182604051602001610d0d929190611945565b6040516020818303038152906040529050610d2661137f565b6040518060800160405280610d3a86611173565b8152602001855167ffffffffffffffff81118015610d5757600080fd5b50604051908082528060200260200182016040528015610d81578160200160208202803683370190505b5081526020810184905260006040909101529050610d9d610a4e565b6040517f8bdb391300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911690638bdb391390610e17907ffeadd389a5c427952d8fdb8057d6c8ba1156cc56000000000000000000000066903390819087906004016117b0565b600060405180830381600087803b158015610e3157600080fd5b505af1158015610e45573d6000803e3d6000fd5b5050604080516002808252606080830184529450909250906020830190803683370190505090507318fcc34bdeaaf9e3b69d2500343527c0c995b1d681600081518110610e8e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc6816001815181106109ec57fe5b73fe18be6b3bd88a2d2a7f928d00292e7a9963cfc681565b7ffeadd389a5c427952d8fdb8057d6c8ba1156cc5600000000000000000000006681565b73c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f81565b610f813373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161460cd611176565b610ff47f000000000000000000000000000000000000000000000000000000000000000084600081518110610fb257fe5b602002602001015186600081518110610fc757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166111849092919063ffffffff16565b50505050565b73feadd389a5c427952d8fdb8057d6c8ba1156cc5681565b60408051600180825281830190925260609160208083019080368337019050509050828160008151811061104257fe5b73ffffffffffffffffffffffffffffffffffffffff9290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050828160008151811061109a57fe5b60209081029190910101526040517f6daefab600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636daefab69061113b90859085907f00000000000000000000000000000000000000000000000000000000000000009060040161175b565b600060405180830381600087803b15801561115557600080fd5b505af1158015611169573d6000803e3d6000fd5b5050505050505050565b90565b816105a9576105a98161122a565b6112258363a9059cbb60e01b84846040516024016111a3929190611735565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611257565b505050565b611254817f42414c0000000000000000000000000000000000000000000000000000000000611304565b50565b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161128091906116f8565b6000604051808303816000865af19150503d80600081146112bd576040519150601f19603f3d011682016040523d82523d6000602084013e6112c2565b606091505b509150915060008214156112da573d6000803e3d6000fd5b610ff48151600014806112fc5750818060200190518101906112fc91906115ea565b6101a2611176565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60405180608001604052806060815260200160608152602001606081526020016000151581525090565b600082601f8301126113b9578081fd5b81356113cc6113c78261197a565b611953565b8181529150602080830190848101818402860182018710156113ed57600080fd5b6000805b8581101561142e57823573ffffffffffffffffffffffffffffffffffffffff8116811461141c578283fd5b855293830193918301916001016113f1565b50505050505092915050565b600082601f83011261144a578081fd5b81356114586113c78261197a565b81815291506020808301908481018184028601820187101561147957600080fd5b60005b848110156114985781358452928201929082019060010161147c565b505050505092915050565b6000602082840312156114b4578081fd5b813567ffffffffffffffff8111156114ca578182fd5b6114d6848285016113a9565b949350505050565b600080600080608085870312156114f3578283fd5b843567ffffffffffffffff8082111561150a578485fd5b611516888389016113a9565b955060209150818701358181111561152c578586fd5b61153889828a0161143a565b95505060408701358181111561154c578485fd5b61155889828a0161143a565b94505060608701358181111561156c578384fd5b8701601f8101891361157c578384fd5b80358281111561158a578485fd5b6115ba847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611953565b925080835289848284010111156115cf578485fd5b80848301858501378201909201929092525092959194509250565b6000602082840312156115fb578081fd5b8151801515811461160a578182fd5b9392505050565b600060208284031215611622578081fd5b5051919050565b6000815180845260208085019450808401835b8381101561166e57815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010161163c565b509495945050505050565b6000815180845260208085019450808401835b8381101561166e5781518752958201959082019060010161168c565b15159052565b600081518084526116c68160208601602086016119b3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161170a8184602087016119b3565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60006060825261176e6060830186611629565b82810360208401526117808186611679565b91505073ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b90815260200190565b6000858252602073ffffffffffffffffffffffffffffffffffffffff8087168285015280861660408501525060806060840152610100830184516080808601528181518084526101208701915084830193508592505b8083101561182e57611818845161199a565b8252928401926001929092019190840190611806565b508387015193507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809250828682030160a087015261186c8185611679565b935050506040850151818584030160c086015261188983826116ae565b92505050606084015161189f60e08501826116a8565b509695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff85168252608060208301526118d96080830185611629565b82810360408401526118eb8185611679565b8381036060909401939093525050600281527f307800000000000000000000000000000000000000000000000000000000000060208201526040019392505050565b604081016004841061193b57fe5b9281526020015290565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561197257600080fd5b604052919050565b600067ffffffffffffffff821115611990578081fd5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff1690565b60005b838110156119ce5781810151838201526020016119b6565b83811115610ff4575050600091015256fea2646970667358221220b2437461d0397f426b2436b253792d08921e6184fd8fba18295fb51c92e9ee4364736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x11B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9B452931 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xE043F56F GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xE8D6101E GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xE8D6101E EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0xF04F2707 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xFD6EA58D EQ PUSH2 0x1DB JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0xE043F56F EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xE4231540 EQ PUSH2 0x1B8 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x9B452931 EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xA2ABB55F EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xCBC87782 EQ PUSH2 0x1A8 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x5FBC1031 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x5FBC1031 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x69AF9C7E EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0x6AD3AAA4 EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x188 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x306AE12 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0xA5E13DC EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x5DC80BD0 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x5F5FB036 EQ PUSH2 0x168 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x133 PUSH2 0x12E CALLDATASIZE PUSH1 0x4 PUSH2 0x14A3 JUMP JUMPDEST PUSH2 0x1E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13D PUSH2 0x3AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14A SWAP2 SWAP1 PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15B PUSH2 0x3C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14A SWAP2 SWAP1 PUSH2 0x17A7 JUMP JUMPDEST PUSH2 0x133 PUSH2 0x3E7 JUMP JUMPDEST PUSH2 0x13D PUSH2 0x5AD JUMP JUMPDEST PUSH2 0x133 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA36 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA4E JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA72 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA8A JUMP JUMPDEST PUSH2 0x13D PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x133 PUSH2 0xABA JUMP JUMPDEST PUSH2 0x13D PUSH2 0xEEA JUMP JUMPDEST PUSH2 0x15B PUSH2 0xF02 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xF26 JUMP JUMPDEST PUSH2 0x133 PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x14DE JUMP JUMPDEST PUSH2 0xF3E JUMP JUMPDEST PUSH2 0x13D PUSH2 0xFFA JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x227 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x237 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x297 SWAP2 SWAP1 PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2E7 SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2F4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x5C38449E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x5C38449E SWAP1 PUSH2 0x375 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x18AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B DUP2 JUMP JUMPDEST PUSH32 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B000200000000000000000027 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x639032D3900875A4CF4960AD6B9EE441657AA93C DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x429 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x485 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0x4C8 DUP2 PUSH2 0x1E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x18FCC34BDEAAF9E3B69D2500343527C0C995B1D6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x50A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x566 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0x5A9 DUP2 PUSH2 0x1E3 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xEB4C2781E4EBA804CE9A9803C67D0893436BB27D DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x607 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x663 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x6DB SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x707 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x72B SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH2 0x7F9 SWAP1 PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F SWAP1 DUP2 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x7A4 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x7F4 SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH2 0x1012 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x80F SWAP3 SWAP2 SWAP1 PUSH2 0x192D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0x828 PUSH2 0x137F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x83C DUP7 PUSH2 0x1173 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x859 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x883 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 POP PUSH2 0x89F PUSH2 0xA4E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8BDB391300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x8BDB3913 SWAP1 PUSH2 0x919 SWAP1 PUSH32 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B000200000000000000000027 SWAP1 CALLER SWAP1 DUP2 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x17B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x947 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x639032D3900875A4CF4960AD6B9EE441657AA93C DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x990 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x9EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0xA2F DUP2 PUSH2 0x1E3 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH20 0x18FCC34BDEAAF9E3B69D2500343527C0C995B1D6 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0x2260FAC5E5542A773AA44FBCFEDF7C193BC2C599 DUP2 JUMP JUMPDEST PUSH20 0x639032D3900875A4CF4960AD6B9EE441657AA93C DUP2 JUMP JUMPDEST PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP3 ADD DUP4 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x2260FAC5E5542A773AA44FBCFEDF7C193BC2C599 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xAFE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xEB4C2781E4EBA804CE9A9803C67D0893436BB27D DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xB5A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0xBB6 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xC2E SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xC7E SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH2 0xCF7 SWAP1 PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 SWAP1 DUP2 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x7A4 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD0D SWAP3 SWAP2 SWAP1 PUSH2 0x1945 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0xD26 PUSH2 0x137F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xD3A DUP7 PUSH2 0x1173 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xD57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD81 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 POP PUSH2 0xD9D PUSH2 0xA4E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8BDB391300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x8BDB3913 SWAP1 PUSH2 0xE17 SWAP1 PUSH32 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56000000000000000000000066 SWAP1 CALLER SWAP1 DUP2 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x17B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x18FCC34BDEAAF9E3B69D2500343527C0C995B1D6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xE8E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x9EC JUMPI INVALID JUMPDEST PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 JUMP JUMPDEST PUSH32 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56000000000000000000000066 DUP2 JUMP JUMPDEST PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 JUMP JUMPDEST PUSH2 0xF81 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH1 0xCD PUSH2 0x1176 JUMP JUMPDEST PUSH2 0xFF4 PUSH32 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xFB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xFC7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1184 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1042 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x109A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x6DAEFAB600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6DAEFAB6 SWAP1 PUSH2 0x113B SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x175B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1155 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1169 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x5A9 JUMPI PUSH2 0x5A9 DUP2 PUSH2 0x122A JUMP JUMPDEST PUSH2 0x1225 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x11A3 SWAP3 SWAP2 SWAP1 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x1257 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1254 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1304 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1280 SWAP2 SWAP1 PUSH2 0x16F8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x12BD JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x12C2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x12DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0xFF4 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x12FC JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x12FC SWAP2 SWAP1 PUSH2 0x15EA JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1176 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x13B9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13CC PUSH2 0x13C7 DUP3 PUSH2 0x197A JUMP JUMPDEST PUSH2 0x1953 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x13ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x142E JUMPI DUP3 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x141C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x13F1 JUMP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x144A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1458 PUSH2 0x13C7 DUP3 PUSH2 0x197A JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1498 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x147C JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14B4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14CA JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x14D6 DUP5 DUP3 DUP6 ADD PUSH2 0x13A9 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x14F3 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x150A JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1516 DUP9 DUP4 DUP10 ADD PUSH2 0x13A9 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 SWAP2 POP DUP2 DUP8 ADD CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x152C JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x1538 DUP10 DUP3 DUP11 ADD PUSH2 0x143A JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x154C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1558 DUP10 DUP3 DUP11 ADD PUSH2 0x143A JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x156C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP8 ADD PUSH1 0x1F DUP2 ADD DUP10 SGT PUSH2 0x157C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP1 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x158A JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x15BA DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x1953 JUMP JUMPDEST SWAP3 POP DUP1 DUP4 MSTORE DUP10 DUP5 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0x15CF JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 DUP5 DUP4 ADD DUP6 DUP6 ADD CALLDATACOPY DUP3 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15FB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x160A JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1622 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x166E JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x163C JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x166E JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x168C JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x16C6 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x19B3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x170A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x19B3 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 MSTORE PUSH2 0x176E PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1629 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1780 DUP2 DUP7 PUSH2 0x1679 JUMP JUMPDEST SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 MSTORE PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP3 DUP6 ADD MSTORE DUP1 DUP7 AND PUSH1 0x40 DUP6 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x100 DUP4 ADD DUP5 MLOAD PUSH1 0x80 DUP1 DUP7 ADD MSTORE DUP2 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x120 DUP8 ADD SWAP2 POP DUP5 DUP4 ADD SWAP4 POP DUP6 SWAP3 POP JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0x182E JUMPI PUSH2 0x1818 DUP5 MLOAD PUSH2 0x199A JUMP JUMPDEST DUP3 MSTORE SWAP3 DUP5 ADD SWAP3 PUSH1 0x1 SWAP3 SWAP1 SWAP3 ADD SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x1806 JUMP JUMPDEST POP DUP4 DUP8 ADD MLOAD SWAP4 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 SWAP3 POP DUP3 DUP7 DUP3 SUB ADD PUSH1 0xA0 DUP8 ADD MSTORE PUSH2 0x186C DUP2 DUP6 PUSH2 0x1679 JUMP JUMPDEST SWAP4 POP POP POP PUSH1 0x40 DUP6 ADD MLOAD DUP2 DUP6 DUP5 SUB ADD PUSH1 0xC0 DUP7 ADD MSTORE PUSH2 0x1889 DUP4 DUP3 PUSH2 0x16AE JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x60 DUP5 ADD MLOAD PUSH2 0x189F PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x16A8 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP3 MSTORE PUSH1 0x80 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x18D9 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x1629 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x18EB DUP2 DUP6 PUSH2 0x1679 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x60 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP4 MSTORE POP POP PUSH1 0x2 DUP2 MSTORE PUSH32 0x3078000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH1 0x4 DUP5 LT PUSH2 0x193B JUMPI INVALID JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1990 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x19CE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19B6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xFF4 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB2 NUMBER PUSH21 0x61D0397F426B2436B253792D08921E6184FD8FBA18 0x29 0x5F 0xB5 SHR SWAP3 0xE9 0xEE NUMBER PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1472:6809:78:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7481:253;;;;;;:::i;:::-;;:::i;:::-;;2243:101;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2350:113;;;:::i;:::-;;;;;;;:::i;6866:462::-;;;:::i;1967:82::-;;;:::i;5133:1283::-;;;:::i;2141:95::-;;;:::i;3179:79::-;;;:::i;1881:80::-;;;:::i;2640:94::-;;;:::i;2554:80::-;;;:::i;3545:1310::-;;;:::i;2055:80::-;;;:::i;1719:111::-;;;:::i;2469:79::-;;;:::i;7973:306::-;;;;;;:::i;:::-;;:::i;1614:99::-;;;:::i;7481:253::-;7558:24;7599:6;:13;7585:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7585:28:78;;7558:55;;7636:6;7643:1;7636:9;;;;;;;;;;;;;;:19;;;7664:6;7636:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7623:7;7631:1;7623:10;;;;;;;;;;;;;;;;;:49;7682:45;;;;;:16;:6;:16;;;;:45;;7699:4;;7705:6;;7713:7;;7682:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7481:253;;:::o;2243:101::-;2301:42;2243:101;:::o;2350:113::-;2397:66;2350:113;:::o;6866:462::-;6940:15;;;6953:1;6940:15;;;6907:30;6940:15;;;;;6907:30;6940:15;;;;;;;;;;-1:-1:-1;6940:15:78;6907:48;;2691:42;6965:14;6980:1;6965:17;;;;;;;;;;;;;:38;;;;;;;;;;;2505:42;7013:14;7028:1;7013:17;;;;;;;;;;;;;:40;;;;;;;;;;;7064:42;7091:14;7064:26;:42::i;:::-;7151:15;;;7164:1;7151:15;;;7117:31;7151:15;;;;;7117:31;7151:15;;;;;;;;;;-1:-1:-1;7151:15:78;7117:49;;2193:42;7176:15;7192:1;7176:18;;;;;;;;;;;;;:40;;;;;;;;;;;2092:42;7226:15;7242:1;7226:18;;;;;;;;;;;;;:42;;;;;;;;;;;7278:43;7305:15;7278:26;:43::i;:::-;6866:462;;:::o;1967:82::-;2006:42;1967:82;:::o;5133:1283::-;5208:15;;;5221:1;5208:15;;;5183:22;5208:15;;;;;5183:22;5208:15;;;;;;;;;;-1:-1:-1;5208:15:78;5183:40;;2505:42;5233:6;5240:1;5233:9;;;;;;;;;;;;;:15;;;;;;;;;;;2591:42;5258:6;5265:1;5258:9;;;;;;;;:16;;;;:9;;;;;;;;;;;:16;5306:47;;;;;5284:19;;2301:42;;5306:35;;:47;;5342:10;;5306:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5655:45;;;;;5284:69;;-1:-1:-1;5616:85:78;;2505:42;;;;5655:13;;:45;;5677:21;;5655:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5616:33;:85::i;:::-;5741:21;5776:57;5835:11;5765:82;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5741:106;;5857:37;;:::i;:::-;5897:146;;;;;;;;5933:17;5943:6;5933:9;:17::i;:::-;5897:146;;;;5978:6;:13;5964:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5964:28:78;-1:-1:-1;5897:146:78;;;;;;;;-1:-1:-1;5897:146:78;;;;;5857:186;-1:-1:-1;6053:10:78;:8;:10::i;:::-;:74;;;;;:19;;;;;;;;:74;;2397:66;;6095:10;;;;6119:7;;6053:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6244:15:78;;;6257:1;6244:15;;;6211:30;6244:15;;;;;6211:30;-1:-1:-1;6244:15:78;;-1:-1:-1;6257:1:78;6244:15;;;;;;;;;;-1:-1:-1;6244:15:78;6211:48;;2691:42;6269:14;6284:1;6269:17;;;;;;;;;;;;;:38;;;;;;;;;;;2505:42;6317:14;6332:1;6317:17;;;;;;;;;;;;;:40;;;;;;;;;;;6367:42;6394:14;6367:26;:42::i;:::-;5133:1283;;;;;:::o;2141:95::-;2193:42;2141:95;:::o;3179:79::-;3245:6;3179:79;:::o;1881:80::-;1918:42;1881:80;:::o;2640:94::-;2691:42;2640:94;:::o;2554:80::-;2591:42;2554:80;:::o;3545:1310::-;3618:15;;;3631:1;3618:15;;;;;;;;;3593:22;;3618:15;;;3593:22;;3618:15;;;;;-1:-1:-1;3618:15:78;3593:40;;1918:42;3643:6;3650:1;3643:9;;;;;;;;;;;;;:16;;;;;;;;;;;2006:42;3669:6;3676:1;3669:9;;;;;;;;;;;;;:18;;;;;;;;;;;2092:42;3697:6;3704:1;3697:9;;;;;;;;:16;;;;:9;;;;;;;;;;;:16;3745:45;;;;;3723:19;;1670:42;;3745:33;;:45;;3779:10;;3745:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4095:46;;;;;3723:67;;-1:-1:-1;4055:87:78;;2092:42;;;;4095:14;;:46;;4118:21;;4095:46;;;:::i;4055:87::-;4182:21;2936:1;4269:11;4206:75;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4182:99;;4291:37;;:::i;:::-;4331:146;;;;;;;;4367:17;4377:6;4367:9;:17::i;:::-;4331:146;;;;4412:6;:13;4398:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4398:28:78;-1:-1:-1;4331:146:78;;;;;;;;-1:-1:-1;4331:146:78;;;;;4291:186;-1:-1:-1;4487:10:78;:8;:10::i;:::-;:72;;;;;:19;;;;;;;;:72;;1764:66;;4527:10;;;;4551:7;;4487:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4678:15:78;;;4691:1;4678:15;;;4644:31;4678:15;;;;;4644:31;-1:-1:-1;4678:15:78;;-1:-1:-1;4691:1:78;4678:15;;;;;;;;;;-1:-1:-1;4678:15:78;4644:49;;2193:42;4703:15;4719:1;4703:18;;;;;;;;;;;;;:40;;;;;;;;;;;2092:42;4753:15;4769:1;4753:18;;;;;;;2055:80;2092:42;2055:80;:::o;1719:111::-;1764:66;1719:111;:::o;2469:79::-;2505:42;2469:79;:::o;7973:306::-;8147:64;8156:10;:29;8178:6;8156:29;;6194:3:14;8147:8:78;:64::i;:::-;8221:51;8252:6;8261:7;8269:1;8261:10;;;;;;;;;;;;;;8221:6;8228:1;8221:9;;;;;;;;;;;;;;:22;;;;:51;;;;;:::i;:::-;7973:306;;;;:::o;1614:99::-;1670:42;1614:99;:::o;6422:336::-;6539:15;;;6552:1;6539:15;;;;;;;;;6514:22;;6539:15;;;;;;;;;;;-1:-1:-1;6539:15:78;6514:40;;6576:5;6564:6;6571:1;6564:9;;;;;;;;:17;;;;;:9;;;;;;;;;;;:17;6618:16;;;6632:1;6618:16;;;;;;;;;6591:24;;6618:16;;;;;;;;;;;;-1:-1:-1;6618:16:78;6591:43;;6657:6;6644:7;6652:1;6644:10;;;;;;;;;;;;;;;;;:19;6674:77;;;;;:43;:21;:43;;;;:77;;6718:6;;6726:7;;6743:6;;6674:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6422:336;;;;:::o;979:182:41:-;1147:6;1127:32::o;918:101:14:-;987:9;982:34;;998:18;1006:9;998:7;:18::i;1000:214:56:-;1112:95;1140:5;1171:23;;;1196:2;1200:5;1148:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1112:19;:95::i;:::-;1000:214;;;:::o;1437:126:14:-;1484:28;1492:9;1484:28;:7;:28::i;:::-;1437:126;:::o;1810:914:56:-;2112:12;2126:23;2153:5;:10;;2164:4;2153:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2111:58;;;;2363:1;2354:7;2351:14;2348:2;;;2405:16;2402:1;2399;2384:38;2449:16;2446:1;2439:27;2348:2;2620:97;2629:10;:17;2650:1;2629:22;:56;;;;2666:10;2655:30;;;;;;;;;;;;:::i;:::-;10980:3:14;2620:8:56;:97::i;1670:3378:14:-;4395:66;1732:18;4383:79;;;4601:66;4595:4;4588:80;4743:1;4737:4;4730:15;2871:2;2904:18;;;2949;;;2876:4;2945:29;;;3747:1;3838:14;2856:18;;;;3827:26;;;;2997:18;;;;3044;;;3040:29;;3859:2;3855:17;3823:50;3737:4;3743:18;;;;;;3733:29;3729:2;3725:38;3802:72;;;;3797:3;3793:82;4810:4;4803:26;1761:14;;;;;5036:3;;5026:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;31:752::-;;163:3;156:4;148:6;144:17;140:27;130:2;;-1:-1;;171:12;130:2;218:6;205:20;240:95;255:79;327:6;255:79;:::i;:::-;240:95;:::i;:::-;363:21;;;231:104;-1:-1;407:4;420:14;;;;395:17;;;509;;;500:27;;;;497:36;-1:-1;494:2;;;546:1;;536:12;494:2;571:1;;556:221;581:6;578:1;575:13;556:221;;;2203:6;2190:20;22256:42;25002:5;22245:54;24962:5;24959:50;24949:2;;571:1;;25013:12;24949:2;649:65;;728:14;;;;756;;;;603:1;596:9;556:221;;;560:14;;;;;;123:660;;;;:::o;809:707::-;;926:3;919:4;911:6;907:17;903:27;893:2;;-1:-1;;934:12;893:2;981:6;968:20;1003:80;1018:64;1075:6;1018:64;:::i;1003:80::-;1111:21;;;994:89;-1:-1;1155:4;1168:14;;;;1143:17;;;1257;;;1248:27;;;;1245:36;-1:-1;1242:2;;;1294:1;;1284:12;1242:2;1319:1;1304:206;1329:6;1326:1;1323:13;1304:206;;;2342:20;;1397:50;;1461:14;;;;1489;;;;1351:1;1344:9;1304:206;;;1308:14;;;;;886:630;;;;:::o;2553:407::-;;2697:2;2685:9;2676:7;2672:23;2668:32;2665:2;;;-1:-1;;2703:12;2665:2;2761:17;2748:31;2799:18;2791:6;2788:30;2785:2;;;-1:-1;;2821:12;2785:2;2851:93;2936:7;2927:6;2916:9;2912:22;2851:93;:::i;:::-;2841:103;2659:301;-1:-1;;;;2659:301::o;2967:1159::-;;;;;3221:3;3209:9;3200:7;3196:23;3192:33;3189:2;;;-1:-1;;3228:12;3189:2;3286:17;3273:31;3324:18;;3316:6;3313:30;3310:2;;;-1:-1;;3346:12;3310:2;3376:93;3461:7;3452:6;3441:9;3437:22;3376:93;:::i;:::-;3366:103;;3534:2;;;;3523:9;3519:18;3506:32;3324:18;3550:6;3547:30;3544:2;;;-1:-1;;3580:12;3544:2;3610:78;3680:7;3671:6;3660:9;3656:22;3610:78;:::i;:::-;3600:88;;;3753:2;3742:9;3738:18;3725:32;3324:18;3769:6;3766:30;3763:2;;;-1:-1;;3799:12;3763:2;3829:78;3899:7;3890:6;3879:9;3875:22;3829:78;:::i;:::-;3819:88;;;3972:2;3961:9;3957:18;3944:32;3324:18;3988:6;3985:30;3982:2;;;-1:-1;;4018:12;3982:2;4078:22;;1754:4;1742:17;;1738:27;-1:-1;1728:2;;-1:-1;;1769:12;1728:2;1816:6;1803:20;3324:18;18683:6;18680:30;18677:2;;;-1:-1;;18713:12;18677:2;1838:64;3534:2;18786:9;1754:4;18771:6;18767:17;18763:33;18844:15;1838:64;:::i;:::-;1829:73;;1922:6;1915:5;1908:21;2026:3;3534:2;2017:6;1950;2008:16;;2005:25;2002:2;;;-1:-1;;2033:12;2002:2;24203:6;3534:2;1950:6;1946:17;3534:2;1984:5;1980:16;24180:30;24241:16;;;;;24234:27;;;;-1:-1;3183:943;;;;-1:-1;3183:943;-1:-1;3183:943::o;4133:257::-;;4245:2;4233:9;4224:7;4220:23;4216:32;4213:2;;;-1:-1;;4251:12;4213:2;1605:6;1599:13;24848:5;21828:13;21821:21;24826:5;24823:32;24813:2;;-1:-1;;24859:12;24813:2;4303:71;4207:183;-1:-1;;;4207:183::o;4397:263::-;;4512:2;4500:9;4491:7;4487:23;4483:32;4480:2;;;-1:-1;;4518:12;4480:2;-1:-1;2490:13;;4474:186;-1:-1;4474:186::o;6517:765::-;;6740:5;19498:12;20466:6;20461:3;20454:19;20503:4;;20498:3;20494:14;6752:93;;20503:4;6931:5;19006:14;-1:-1;6970:290;6995:6;6992:1;6989:13;6970:290;;;7056:13;;22256:42;22245:54;9749:86;;5063:14;;;;20074;;;;7017:1;7010:9;6970:290;;;-1:-1;7266:10;;6656:626;-1:-1;;;;;6656:626::o;7321:670::-;;7504:5;19498:12;20466:6;20461:3;20454:19;20503:4;;20498:3;20494:14;7516:83;;20503:4;7670:5;19006:14;-1:-1;7709:260;7734:6;7731:1;7728:13;7709:260;;;7795:13;;8900:37;;5245:14;;;;20074;;;;7756:1;7749:9;7709:260;;8728:94;21828:13;21821:21;8783:34;;8777:45::o;8949:323::-;;9081:5;19498:12;20466:6;20461:3;20454:19;9164:52;9209:6;20503:4;20498:3;20494:14;20503:4;9190:5;9186:16;9164:52;:::i;:::-;24640:2;24620:14;24636:7;24616:28;9228:39;;;;20503:4;9228:39;;9029:243;-1:-1;;9029:243::o;12388:271::-;;9439:5;19498:12;9550:52;9595:6;9590:3;9583:4;9576:5;9572:16;9550:52;:::i;:::-;9614:16;;;;;12522:137;-1:-1;;12522:137::o;12666:222::-;22256:42;22245:54;;;;5509:45;;12793:2;12778:18;;12764:124::o;13140:333::-;22256:42;22245:54;;;;5509:45;;13459:2;13444:18;;8900:37;13295:2;13280:18;;13266:207::o;13480:770::-;;13778:2;13799:17;13792:47;13853:123;13778:2;13767:9;13763:18;13962:6;13853:123;:::i;:::-;14024:9;14018:4;14014:20;14009:2;13998:9;13994:18;13987:48;14049:108;14152:4;14143:6;14049:108;:::i;:::-;14041:116;;;22256:42;21638:5;22245:54;14236:2;14225:9;14221:18;5509:45;13749:501;;;;;;:::o;14257:222::-;8900:37;;;14384:2;14369:18;;14355:124::o;14486:784::-;;8930:5;8907:3;8900:37;14960:2;22256:42;;21638:5;22245:54;14960:2;14949:9;14945:18;5352:58;22256:42;21638:5;22245:54;15059:2;15048:9;15044:18;5509:45;;14787:3;15096:2;15085:9;15081:18;15074:48;11167:14;14776:9;11167:14;11250:16;11244:23;14787:3;;14776:9;14772:19;11280:38;11333:118;5938:5;19498:12;20466:6;20461:3;20454:19;20494:14;14776:9;20494:14;5950:83;;14960:2;6119:5;19006:14;6131:21;;-1:-1;6164:10;;6158:290;6183:6;6180:1;6177:13;6158:290;;;22641:73;6250:6;6244:13;22641:73;:::i;:::-;9749:86;;20074:14;;;;6205:1;6198:9;;;;;4851:14;;;;6158:290;;;6162:14;14960:2;11538:5;11534:16;11528:23;11508:43;;11587:14;;;;14776:9;11591:4;11587:14;;11571;14776:9;11571:14;11564:38;11617:103;11715:4;11701:12;11617:103;:::i;:::-;11609:111;;;;15059:2;11802:5;11798:16;11792:23;11587:14;14776:9;11855:4;11851:14;;11835;14776:9;11835:14;11828:38;11881:71;11947:4;11933:12;11881:71;:::i;:::-;11873:79;;;;15096:2;12043:5;12039:16;12033:23;12062:57;12104:14;14776:9;12104:14;12090:12;12062:57;:::i;:::-;-1:-1;15128:132;14758:512;-1:-1;;;;;;14758:512::o;15277:1146::-;;22256:42;21638:5;22245:54;9756:3;9749:86;15711:3;15866:2;15855:9;15851:18;15844:48;15906:123;15711:3;15700:9;15696:19;16015:6;15906:123;:::i;:::-;16077:9;16071:4;16067:20;16062:2;16051:9;16047:18;16040:48;16102:108;16205:4;16196:6;16102:108;:::i;:::-;16248:20;;;16243:2;16228:18;;;16221:48;;;;-1:-1;;10855:1;20454:19;;10890:4;15866:2;20494:14;;10870:25;16062:2;10914:12;;15682:741;-1:-1;;;15682:741::o;16948:353::-;17113:2;17098:18;;24738:1;24728:12;;24718:2;;24744:9;24718:2;10560:60;;;17287:2;17272:18;8900:37;17084:217;:::o;17308:333::-;8900:37;;;17627:2;17612:18;;8900:37;17463:2;17448:18;;17434:207::o;17648:256::-;17710:2;17704:9;17736:17;;;17811:18;17796:34;;17832:22;;;17793:62;17790:2;;;17868:1;;17858:12;17790:2;17710;17877:22;17688:216;;-1:-1;17688:216::o;17911:319::-;;18085:18;18077:6;18074:30;18071:2;;;-1:-1;;18107:12;18071:2;-1:-1;18152:4;18140:17;;;18205:15;;18008:222::o;21558:91::-;22256:42;22245:54;;21603:46::o;24276:268::-;24341:1;24348:101;24362:6;24359:1;24356:13;24348:101;;;24429:11;;;24423:18;24410:11;;;24403:39;24384:2;24377:10;24348:101;;;24464:6;24461:1;24458:13;24455:2;;;-1:-1;;24341:1;24511:16;;24504:27;24325:219::o"},"methodIdentifiers":{"BTC_STABLE_POOL_ADDRESS()":"fd6ea58d","BTC_STABLE_POOL_ID()":"e4231540","SNX()":"e8d6101e","SNX_IMPLEMENTATION()":"a2abb55f","SNX_WEIGHTED_POOL_ADDRESS()":"0a5e13dc","SNX_WEIGHTED_POOL_ID()":"5dc80bd0","WETH()":"ad5c4648","exitBTCStablePool()":"cbc87782","exitSNXWeightedPool()":"69af9c7e","getVault()":"8d928af8","receiveFlashLoan(address[],uint256[],uint256[],bytes)":"f04f2707","renBTC()":"5fbc1031","sBTC()":"e043f56f","sBTC_IMPLEMENTATION()":"6ad3aaa4","sweepDoubleEntrypointToken(address[])":"0306ae12","sweepSNXsBTC()":"5f5fb036","wBTC()":"9b452931"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BTC_STABLE_POOL_ADDRESS\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BTC_STABLE_POOL_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SNX\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SNX_IMPLEMENTATION\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SNX_WEIGHTED_POOL_ADDRESS\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SNX_WEIGHTED_POOL_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"exitBTCStablePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"exitSNXWeightedPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"receiveFlashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renBTC\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sBTC\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sBTC_IMPLEMENTATION\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"sweepDoubleEntrypointToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sweepSNXsBTC\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wBTC\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"receiveFlashLoan(address[],uint256[],uint256[],bytes)\":{\"details\":\"Flash loan callback. Assumes that it receives a flashloan of multiple assets (all entrypoints of a Synthetix synth). We only need to repay the first loan as that will automatically all other loans.\"}},\"title\":\"DoubleEntrypointFixRelayer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"exitBTCStablePool()\":{\"notice\":\"Fully exit the BTC Stable Pool into its three components (wBTC, renBTC and sBTC), with no price impact nor swap fees. This relayer must have been previously approved by the caller, and proper permissions granted by Balancer Governance.\"},\"exitSNXWeightedPool()\":{\"notice\":\"Fully exit the SNX Weighted Pool into its two components (SNX and WETH), with no price impact nor swap fees. This relayer must have been previously approved by the caller, and proper permissions granted by Balancer Governance.\"},\"sweepDoubleEntrypointToken(address[])\":{\"notice\":\"Sweep a double-entrypoint token into the Protocol Fee Collector by passing all entrypoints of a given token.\"},\"sweepSNXsBTC()\":{\"notice\":\"Sweep all SNX and sBTC from the Vault into the Protocol Fee Collector.\"}},\"notice\":\"This contract performs mitigations to safeguard funds affected by double-entrypoint tokens (mostly Synthetix tokens). It doesn't use the standard relayer architecture to simplify the code.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/special/DoubleEntrypointFixRelayer.sol\":\"DoubleEntrypointFixRelayer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol\":{\"keccak256\":\"0xea9c3ac559fcb248b13d345f7b0dd267173e11a56804186bc689971aeedd15a9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c89254dab1a84abe22b8527e8d7bd4c9195bfa8bc49f4016b0e66d6069a697ef\",\"dweb:/ipfs/QmbursnX1j9a2JwrpTzhVHrcsgng8EgCDYMbTjwibvCdj3\"]},\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":{\"keccak256\":\"0x77711c8f7dffb3ec7c6ade6aa8130dfcf905920e1f4de2cc14a8869f356c1e7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0d7b48b6172bc6ece5bb47acab7541c0e7bafe0c05b77c36231fd9d0563669ff\",\"dweb:/ipfs/QmQoqo3qshSWXD3PwkhEoLzfcZEv56zpYKAtzXEyh8h3oo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol\":{\"keccak256\":\"0x2419469914d5bcfc6560b2c2d6d0d4e9cb0b31267c3a58af05e01aa6cf11851e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3d053b9cc7f6b715dacf7f9d4353dc189d3f24de8d223b09cc80822f9801e347\",\"dweb:/ipfs/QmRCL1JAxwenhpLZTtMLpX4vdhA6SV5jUVcQMvGzqppNJ4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x773d0bf95fd51f7042cf5e20d1424aae24218c358ad71676c29878f76d81e7f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86d0397ef1443257ad7a49306f3f2bdd490f4a238d4d416373031b8262d211ee\",\"dweb:/ipfs/QmUHBu6gWfnhLEjQ3FCcbha6zUVZVfPFaNJMvnz9h8Prvy\"]},\"contracts/relayer/special/DoubleEntrypointFixRelayer.sol\":{\"keccak256\":\"0xfdba1eecf46a85f5dd250ba8c27e9f5495677f1fca380c09d1b6f6b3c9d4aed3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b79d37733121b67ac700e40f159859d2659270a8d5a01d2bb43d900cd3a3a705\",\"dweb:/ipfs/QmbF3eM5ct61ejj1AguHWUwPMfx53Vhz4Y3pq25jA6ev62\"]}},\"version\":1}"}},"contracts/test/MockBaseRelayerLibrary.sol":{"MockBaseRelayerLibrary":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"ChainedReferenceValueRead","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"input","type":"bytes"}],"name":"bytesTunnel","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"getChainedReferenceValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getEntrypoint","outputs":[{"internalType":"contract IBalancerRelayer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"isChainedReference","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setChainedReferenceValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"relayer","type":"address"},{"internalType":"bool","name":"approved","type":"bool"},{"internalType":"bytes","name":"authorisation","type":"bytes"}],"name":"setRelayerApproval","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101006040527fae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb50960e05234801561003557600080fd5b506040516114253803806114258339810160408190526100549161013e565b80806001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561008e57600080fd5b505afa1580156100a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100c6919061013e565b6001600160601b0319606091821b81166080529082901b1660a052604051819030906100f190610131565b6100fc929190610161565b604051809103906000f080158015610118573d6000803e3d6000fd5b5060601b6001600160601b03191660c052506101939050565b61078780610c9e83390190565b60006020828403121561014f578081fd5b815161015a8161017b565b9392505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b038116811461019057600080fd5b50565b60805160601c60a05160601c60c05160601c60e051610acd6101d16000398061063252508061021e52508061035b528061038b525050610acd6000f3fe6080604052600436106100965760003560e01c80638d928af811610069578063c518e5311161004e578063c518e5311461015d578063ec6edf001461017d578063f3cab685146101aa57610096565b80638d928af814610128578063b6d247371461013d57610096565b806356cc064e1461009b5780635967b696146100d15780637fd0e5d5146100f357806380db15bd14610115575b600080fd5b3480156100a757600080fd5b506100bb6100b63660046107f5565b6101d7565b6040516100c891906109a3565b60405180910390f35b3480156100dd57600080fd5b506100f16100ec3660046108b9565b6101da565b005b3480156100ff57600080fd5b5061010861021c565b6040516100c891906109d6565b6100f161012336600461074c565b610240565b34801561013457600080fd5b50610108610389565b34801561014957600080fd5b506100f161015836600461088e565b6103ad565b34801561016957600080fd5b506100f16101783660046108d1565b610460565b34801561018957600080fd5b5061019d6101983660046108b9565b61046e565b6040516100c89190610998565b3480156101b657600080fd5b506101ca6101c53660046108b9565b61047f565b6040516100c89190610a2e565b90565b7fc78533b5d3aff901cb655b9491c67366edabc3cd9cb680c3934f61d7eb07875261020482610491565b6040516102119190610a2e565b60405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff8416301480610262575082155b6102a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610298906109f7565b60405180910390fd5b606063fa6e671d60e01b3386866040516024016102c093929190610941565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093525161032f92869186910161090e565b60408051601f19818403018152919052905061038173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826104bc565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6103b681610541565b156103c7576103c481610491565b90505b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b36103eb610389565b836040518363ffffffff1660e01b8152600401610409929190610972565b602060405180830381600087803b15801561042357600080fd5b505af1158015610437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045b91906107d9565b505050565b61046a8282610588565b5050565b600061047982610541565b92915050565b600061048a8261059b565b9392505050565b600080600061049f8461059b565b915091506104ac846105b2565b1561048a57600082559392505050565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516104e791906108f2565b6000604051808303816000865af19150503d8060008114610524576040519150601f19603f3d011682016040523d82523d6000602084013e610529565b606091505b509150915061053882826105f9565b95945050505050565b7ffff0000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b600061059383610623565b919091555050565b6000806105a783610623565b915081549050915091565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b60608215610608575080610479565b8151156106185781518083602001fd5b6104796101ae610681565b60006001610630836106ae565b7f0000000000000000000000000000000000000000000000000000000000000000604051602001610662929190610933565b60408051808303601f1901815291905280516020909101200392915050565b6106ab817f42414c00000000000000000000000000000000000000000000000000000000006106d1565b50565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60008060008060608587031215610761578384fd5b843561076c81610a67565b9350602085013561077c81610a89565b9250604085013567ffffffffffffffff80821115610798578384fd5b818701915087601f8301126107ab578384fd5b8135818111156107b9578485fd5b8860208285010111156107ca578485fd5b95989497505060200194505050565b6000602082840312156107ea578081fd5b815161048a81610a89565b60006020808385031215610807578182fd5b823567ffffffffffffffff8082111561081e578384fd5b818501915085601f830112610831578384fd5b81358181111561083f578485fd5b60405184601f19601f840116820101818110848211171561085e578687fd5b6040528181528382018501881015610874578586fd5b818585018683013790810190930193909352509392505050565b600080604083850312156108a0578182fd5b82356108ab81610a67565b946020939093013593505050565b6000602082840312156108ca578081fd5b5035919050565b600080604083850312156108e3578182fd5b50508035926020909101359150565b60008251610904818460208701610a37565b9190910192915050565b60008451610920818460208901610a37565b8201838582379092019182525092915050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152901515604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60006020825282518060208401526109c2816040850160208701610a37565b601f01601f19169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b90815260200190565b60005b83811015610a52578181015183820152602001610a3a565b83811115610a61576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff811681146106ab57600080fd5b80151581146106ab57600080fdfea2646970667358221220ea48ea68c5f7ce8e13b09deab7b31847ce6d1e003a8d74ab030954b9b548686e64736f6c6343000701003360c060405234801561001057600080fd5b5060405161078738038061078783398101604081905261002f91610052565b60016000556001600160601b0319606092831b8116608052911b1660a0526100a3565b60008060408385031215610064578182fd5b825161006f8161008b565b60208401519092506100808161008b565b809150509250929050565b6001600160a01b03811681146100a057600080fd5b50565b60805160601c60a05160601c6106b36100d46000398060fc528061020f5250806058528061012052506106b36000f3fe6080604052600436106100385760003560e01c80637678922e146100885780638d928af8146100b3578063ac9650d8146100c857610083565b36610083576100813373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102066100e8565b005b600080fd5b34801561009457600080fd5b5061009d6100fa565b6040516100aa919061050e565b60405180910390f35b3480156100bf57600080fd5b5061009d61011e565b6100db6100d6366004610480565b610142565b6040516100aa919061052f565b816100f6576100f68161026e565b5050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061014c61029b565b8167ffffffffffffffff8111801561016357600080fd5b5060405190808252806020026020018201604052801561019757816020015b60608152602001906001900390816101825790505b50905060005b82811015610257576102388484838181106101b457fe5b90506020028101906101c691906105e3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016929150506102b4565b82828151811061024457fe5b602090810291909101015260010161019d565b50610260610337565b610268610348565b92915050565b610298817f42414c000000000000000000000000000000000000000000000000000000000061034f565b50565b6102ad600260005414156101906100e8565b6002600055565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516102df91906104ef565b600060405180830381855af49150503d806000811461031a576040519150601f19603f3d011682016040523d82523d6000602084013e61031f565b606091505b509150915061032e82826103ca565b95945050505050565b4780156102985761029833826103f4565b6001600055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156103d9575080610268565b8151156103e95781518083602001fd5b6102686101ae61026e565b610403814710156101a36100e8565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516104299061050b565b60006040518083038185875af1925050503d8060008114610466576040519150601f19603f3d011682016040523d82523d6000602084013e61046b565b606091505b5050905061047b816101a46100e8565b505050565b60008060208385031215610492578182fd5b823567ffffffffffffffff808211156104a9578384fd5b818501915085601f8301126104bc578384fd5b8135818111156104ca578485fd5b86602080830285010111156104dd578485fd5b60209290920196919550909350505050565b6000825161050181846020870161064d565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156105d6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610599818989018a850161064d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01695909501860194509285019290850190600101610554565b5092979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610617578283fd5b83018035915067ffffffffffffffff821115610631578283fd5b60200191503681900382131561064657600080fd5b9250929050565b60005b83811015610668578181015183820152602001610650565b83811115610677576000848401525b5050505056fea2646970667358221220063fdaaad6c7f32fb6dd53f100269a9ea16c7241c4a9587b1f83f82a35b5424264736f6c63430007010033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE PUSH32 0xAE1DC54057AF8E8E5CE068CDD4383149C7EFCB30E8FB95B592EE1594367FB509 PUSH1 0xE0 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1425 CODESIZE SUB DUP1 PUSH2 0x1425 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x54 SWAP2 PUSH2 0x13E JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAD5C4648 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xC6 SWAP2 SWAP1 PUSH2 0x13E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP1 DUP3 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 ADDRESS SWAP1 PUSH2 0xF1 SWAP1 PUSH2 0x131 JUMP JUMPDEST PUSH2 0xFC SWAP3 SWAP2 SWAP1 PUSH2 0x161 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x118 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xC0 MSTORE POP PUSH2 0x193 SWAP1 POP JUMP JUMPDEST PUSH2 0x787 DUP1 PUSH2 0xC9E DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x15A DUP2 PUSH2 0x17B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH2 0xACD PUSH2 0x1D1 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x632 MSTORE POP DUP1 PUSH2 0x21E MSTORE POP DUP1 PUSH2 0x35B MSTORE DUP1 PUSH2 0x38B MSTORE POP POP PUSH2 0xACD PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x96 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x69 JUMPI DUP1 PUSH4 0xC518E531 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xC518E531 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0xEC6EDF00 EQ PUSH2 0x17D JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0x1AA JUMPI PUSH2 0x96 JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0x13D JUMPI PUSH2 0x96 JUMP JUMPDEST DUP1 PUSH4 0x56CC064E EQ PUSH2 0x9B JUMPI DUP1 PUSH4 0x5967B696 EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x115 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x7F5 JUMP JUMPDEST PUSH2 0x1D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x9A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF1 PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0x8B9 JUMP JUMPDEST PUSH2 0x1DA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108 PUSH2 0x21C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x9D6 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x74C JUMP JUMPDEST PUSH2 0x240 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108 PUSH2 0x389 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF1 PUSH2 0x158 CALLDATASIZE PUSH1 0x4 PUSH2 0x88E JUMP JUMPDEST PUSH2 0x3AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF1 PUSH2 0x178 CALLDATASIZE PUSH1 0x4 PUSH2 0x8D1 JUMP JUMPDEST PUSH2 0x460 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0x8B9 JUMP JUMPDEST PUSH2 0x46E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x998 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CA PUSH2 0x1C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x8B9 JUMP JUMPDEST PUSH2 0x47F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xA2E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0xC78533B5D3AFF901CB655B9491C67366EDABC3CD9CB680C3934F61D7EB078752 PUSH2 0x204 DUP3 PUSH2 0x491 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x211 SWAP2 SWAP1 PUSH2 0xA2E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ADDRESS EQ DUP1 PUSH2 0x262 JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x2A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x298 SWAP1 PUSH2 0x9F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2C0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x941 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x32F SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x90E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x381 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 PUSH2 0x4BC JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x3B6 DUP2 PUSH2 0x541 JUMP JUMPDEST ISZERO PUSH2 0x3C7 JUMPI PUSH2 0x3C4 DUP2 PUSH2 0x491 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH2 0x3EB PUSH2 0x389 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x409 SWAP3 SWAP2 SWAP1 PUSH2 0x972 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x437 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x45B SWAP2 SWAP1 PUSH2 0x7D9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x46A DUP3 DUP3 PUSH2 0x588 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x479 DUP3 PUSH2 0x541 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48A DUP3 PUSH2 0x59B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x49F DUP5 PUSH2 0x59B JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x4AC DUP5 PUSH2 0x5B2 JUMP JUMPDEST ISZERO PUSH2 0x48A JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x4E7 SWAP2 SWAP1 PUSH2 0x8F2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x524 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x529 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x538 DUP3 DUP3 PUSH2 0x5F9 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x593 DUP4 PUSH2 0x623 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5A7 DUP4 PUSH2 0x623 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x608 JUMPI POP DUP1 PUSH2 0x479 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x618 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x479 PUSH2 0x1AE PUSH2 0x681 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x630 DUP4 PUSH2 0x6AE JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x662 SWAP3 SWAP2 SWAP1 PUSH2 0x933 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6AB DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x6D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x761 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x76C DUP2 PUSH2 0xA67 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x77C DUP2 PUSH2 0xA89 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x798 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x7AB JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x7B9 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x7CA JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7EA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x48A DUP2 PUSH2 0xA89 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x807 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x81E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x831 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x83F JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0x85E JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP9 LT ISZERO PUSH2 0x874 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD SWAP1 SWAP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x8A0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x8AB DUP2 PUSH2 0xA67 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8CA JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x8E3 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x904 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xA37 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x920 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0xA37 JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x9C2 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xA37 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA52 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA3A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x6AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x6AB JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEA 0x48 0xEA PUSH9 0xC5F7CE8E13B09DEAB7 0xB3 XOR SELFBALANCE 0xCE PUSH14 0x1E003A8D74AB030954B9B548686E PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x787 CODESIZE SUB DUP1 PUSH2 0x787 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH2 0xA3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x64 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x6F DUP2 PUSH2 0x8B JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x80 DUP2 PUSH2 0x8B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x6B3 PUSH2 0xD4 PUSH1 0x0 CODECOPY DUP1 PUSH1 0xFC MSTORE DUP1 PUSH2 0x20F MSTORE POP DUP1 PUSH1 0x58 MSTORE DUP1 PUSH2 0x120 MSTORE POP PUSH2 0x6B3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7678922E EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xC8 JUMPI PUSH2 0x83 JUMP JUMPDEST CALLDATASIZE PUSH2 0x83 JUMPI PUSH2 0x81 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x206 PUSH2 0xE8 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0xFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0x11E JUMP JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x480 JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x52F JUMP JUMPDEST DUP2 PUSH2 0xF6 JUMPI PUSH2 0xF6 DUP2 PUSH2 0x26E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x14C PUSH2 0x29B JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x197 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x182 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x257 JUMPI PUSH2 0x238 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1B4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x5E3 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 SWAP2 POP POP PUSH2 0x2B4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x244 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x19D JUMP JUMPDEST POP PUSH2 0x260 PUSH2 0x337 JUMP JUMPDEST PUSH2 0x268 PUSH2 0x348 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x298 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x34F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x2AD PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x31A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x31F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x32E DUP3 DUP3 PUSH2 0x3CA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH2 0x298 CALLER DUP3 PUSH2 0x3F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x3D9 JUMPI POP DUP1 PUSH2 0x268 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x3E9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x268 PUSH2 0x1AE PUSH2 0x26E JUMP JUMPDEST PUSH2 0x403 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x429 SWAP1 PUSH2 0x50B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x46B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x47B DUP2 PUSH2 0x1A4 PUSH2 0xE8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x492 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4BC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x4CA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x4DD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x501 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x64D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5D6 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP8 MSTORE PUSH2 0x599 DUP2 DUP10 DUP10 ADD DUP11 DUP6 ADD PUSH2 0x64D JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP6 SWAP1 SWAP6 ADD DUP7 ADD SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x554 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x617 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x631 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x668 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x650 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MOD EXTCODEHASH 0xDA 0xAA 0xD6 0xC7 RETURN 0x2F 0xB6 0xDD MSTORE8 CALL STOP 0x26 SWAP11 SWAP15 LOG1 PUSH13 0x7241C4A9587B1F83F82A35B542 TIMESTAMP PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"928:676:79:-:0;;;7706:42:69;7657:91;;1041:54:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1086:5;2010::69;-1:-1:-1;;;;;2010:10:69;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1450:12:60;;;;;;;;2034:14:69;;;;;::::1;::::0;2072:41:::1;::::0;2043:5;;2107:4:::1;::::0;2072:41:::1;::::0;::::1;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;2058:55:69::1;::::0;-1:-1:-1;;;;;;2058:55:69;::::1;::::0;-1:-1:-1;928:676:79;;-1:-1:-1;928:676:79;;;;;;;;;:::o;345:293:-1:-;;475:2;463:9;454:7;450:23;446:32;443:2;;;-1:-1;;481:12;443:2;104:6;98:13;116:48;158:5;116:48;:::i;:::-;533:89;437:201;-1:-1;;;437:201::o;1226:363::-;-1:-1;;;;;1981:54;;;1149:65;;1981:54;;1575:2;1560:18;;1014:37;1396:2;1381:18;;1367:222::o;2335:147::-;-1:-1;;;;;1981:54;;2409:50;;2399:2;;2473:1;;2463:12;2399:2;2393:89;:::o;:::-;928:676:79;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"9655":[{"length":32,"start":859},{"length":32,"start":907}],"9657":[{"length":32,"start":542}],"10025":[{"length":32,"start":1586}]},"linkReferences":{},"object":"6080604052600436106100965760003560e01c80638d928af811610069578063c518e5311161004e578063c518e5311461015d578063ec6edf001461017d578063f3cab685146101aa57610096565b80638d928af814610128578063b6d247371461013d57610096565b806356cc064e1461009b5780635967b696146100d15780637fd0e5d5146100f357806380db15bd14610115575b600080fd5b3480156100a757600080fd5b506100bb6100b63660046107f5565b6101d7565b6040516100c891906109a3565b60405180910390f35b3480156100dd57600080fd5b506100f16100ec3660046108b9565b6101da565b005b3480156100ff57600080fd5b5061010861021c565b6040516100c891906109d6565b6100f161012336600461074c565b610240565b34801561013457600080fd5b50610108610389565b34801561014957600080fd5b506100f161015836600461088e565b6103ad565b34801561016957600080fd5b506100f16101783660046108d1565b610460565b34801561018957600080fd5b5061019d6101983660046108b9565b61046e565b6040516100c89190610998565b3480156101b657600080fd5b506101ca6101c53660046108b9565b61047f565b6040516100c89190610a2e565b90565b7fc78533b5d3aff901cb655b9491c67366edabc3cd9cb680c3934f61d7eb07875261020482610491565b6040516102119190610a2e565b60405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff8416301480610262575082155b6102a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610298906109f7565b60405180910390fd5b606063fa6e671d60e01b3386866040516024016102c093929190610941565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093525161032f92869186910161090e565b60408051601f19818403018152919052905061038173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016826104bc565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6103b681610541565b156103c7576103c481610491565b90505b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b36103eb610389565b836040518363ffffffff1660e01b8152600401610409929190610972565b602060405180830381600087803b15801561042357600080fd5b505af1158015610437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045b91906107d9565b505050565b61046a8282610588565b5050565b600061047982610541565b92915050565b600061048a8261059b565b9392505050565b600080600061049f8461059b565b915091506104ac846105b2565b1561048a57600082559392505050565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516104e791906108f2565b6000604051808303816000865af19150503d8060008114610524576040519150601f19603f3d011682016040523d82523d6000602084013e610529565b606091505b509150915061053882826105f9565b95945050505050565b7ffff0000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b600061059383610623565b919091555050565b6000806105a783610623565b915081549050915091565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b60608215610608575080610479565b8151156106185781518083602001fd5b6104796101ae610681565b60006001610630836106ae565b7f0000000000000000000000000000000000000000000000000000000000000000604051602001610662929190610933565b60408051808303601f1901815291905280516020909101200392915050565b6106ab817f42414c00000000000000000000000000000000000000000000000000000000006106d1565b50565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60008060008060608587031215610761578384fd5b843561076c81610a67565b9350602085013561077c81610a89565b9250604085013567ffffffffffffffff80821115610798578384fd5b818701915087601f8301126107ab578384fd5b8135818111156107b9578485fd5b8860208285010111156107ca578485fd5b95989497505060200194505050565b6000602082840312156107ea578081fd5b815161048a81610a89565b60006020808385031215610807578182fd5b823567ffffffffffffffff8082111561081e578384fd5b818501915085601f830112610831578384fd5b81358181111561083f578485fd5b60405184601f19601f840116820101818110848211171561085e578687fd5b6040528181528382018501881015610874578586fd5b818585018683013790810190930193909352509392505050565b600080604083850312156108a0578182fd5b82356108ab81610a67565b946020939093013593505050565b6000602082840312156108ca578081fd5b5035919050565b600080604083850312156108e3578182fd5b50508035926020909101359150565b60008251610904818460208701610a37565b9190910192915050565b60008451610920818460208901610a37565b8201838582379092019182525092915050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152901515604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b60006020825282518060208401526109c2816040850160208701610a37565b601f01601f19169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b90815260200190565b60005b83811015610a52578181015183820152602001610a3a565b83811115610a61576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff811681146106ab57600080fd5b80151581146106ab57600080fdfea2646970667358221220ea48ea68c5f7ce8e13b09deab7b31847ce6d1e003a8d74ab030954b9b548686e64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x96 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x69 JUMPI DUP1 PUSH4 0xC518E531 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xC518E531 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0xEC6EDF00 EQ PUSH2 0x17D JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0x1AA JUMPI PUSH2 0x96 JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0x13D JUMPI PUSH2 0x96 JUMP JUMPDEST DUP1 PUSH4 0x56CC064E EQ PUSH2 0x9B JUMPI DUP1 PUSH4 0x5967B696 EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x115 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x7F5 JUMP JUMPDEST PUSH2 0x1D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x9A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF1 PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0x8B9 JUMP JUMPDEST PUSH2 0x1DA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108 PUSH2 0x21C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x9D6 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x74C JUMP JUMPDEST PUSH2 0x240 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108 PUSH2 0x389 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF1 PUSH2 0x158 CALLDATASIZE PUSH1 0x4 PUSH2 0x88E JUMP JUMPDEST PUSH2 0x3AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF1 PUSH2 0x178 CALLDATASIZE PUSH1 0x4 PUSH2 0x8D1 JUMP JUMPDEST PUSH2 0x460 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0x8B9 JUMP JUMPDEST PUSH2 0x46E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x998 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CA PUSH2 0x1C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x8B9 JUMP JUMPDEST PUSH2 0x47F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xA2E JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0xC78533B5D3AFF901CB655B9491C67366EDABC3CD9CB680C3934F61D7EB078752 PUSH2 0x204 DUP3 PUSH2 0x491 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x211 SWAP2 SWAP1 PUSH2 0xA2E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ADDRESS EQ DUP1 PUSH2 0x262 JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x2A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x298 SWAP1 PUSH2 0x9F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2C0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x941 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x32F SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x90E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x381 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 PUSH2 0x4BC JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x3B6 DUP2 PUSH2 0x541 JUMP JUMPDEST ISZERO PUSH2 0x3C7 JUMPI PUSH2 0x3C4 DUP2 PUSH2 0x491 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH2 0x3EB PUSH2 0x389 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x409 SWAP3 SWAP2 SWAP1 PUSH2 0x972 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x437 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x45B SWAP2 SWAP1 PUSH2 0x7D9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x46A DUP3 DUP3 PUSH2 0x588 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x479 DUP3 PUSH2 0x541 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48A DUP3 PUSH2 0x59B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x49F DUP5 PUSH2 0x59B JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x4AC DUP5 PUSH2 0x5B2 JUMP JUMPDEST ISZERO PUSH2 0x48A JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x4E7 SWAP2 SWAP1 PUSH2 0x8F2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x524 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x529 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x538 DUP3 DUP3 PUSH2 0x5F9 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x593 DUP4 PUSH2 0x623 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5A7 DUP4 PUSH2 0x623 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x608 JUMPI POP DUP1 PUSH2 0x479 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x618 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x479 PUSH2 0x1AE PUSH2 0x681 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x630 DUP4 PUSH2 0x6AE JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x662 SWAP3 SWAP2 SWAP1 PUSH2 0x933 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6AB DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x6D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x761 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x76C DUP2 PUSH2 0xA67 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x77C DUP2 PUSH2 0xA89 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x798 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x7AB JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x7B9 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x7CA JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7EA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x48A DUP2 PUSH2 0xA89 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x807 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x81E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x831 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x83F JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0x85E JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP9 LT ISZERO PUSH2 0x874 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD SWAP1 SWAP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x8A0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x8AB DUP2 PUSH2 0xA67 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8CA JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x8E3 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x904 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xA37 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x920 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0xA37 JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x9C2 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xA37 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA52 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA3A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x6AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x6AB JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEA 0x48 0xEA PUSH9 0xC5F7CE8E13B09DEAB7 0xB3 XOR SELFBALANCE 0xCE PUSH14 0x1E003A8D74AB030954B9B548686E PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"928:676:79:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1497:105;;;;;;;;;;-1:-1:-1;1497:105:79;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1358:133;;;;;;;;;;-1:-1:-1;1358:133:79;;;;;:::i;:::-;;:::i;:::-;;2220:99:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2433:466::-;;;;;;:::i;:::-;;:::i;2126:88::-;;;;;;;;;;;;;:::i;3077:273::-;;;;;;;;;;-1:-1:-1;3077:273:69;;;;;:::i;:::-;;:::i;1229:123:79:-;;;;;;;;;;-1:-1:-1;1229:123:79;;;;;:::i;:::-;;:::i;1101:122::-;;;;;;;;;;-1:-1:-1;1101:122:79;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3525:153:69:-;;;;;;;;;;-1:-1:-1;3525:153:69;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1497:105:79:-;1590:5;1497:105::o;1358:133::-;1427:57;1453:30;1479:3;1453:25;:30::i;:::-;1427:57;;;;;;:::i;:::-;;;;;;;;1358:133;:::o;2220:99:69:-;2301:11;2220:99;:::o;2433:466::-;2588:24;;;2607:4;2588:24;;:37;;;2617:8;2616:9;2588:37;2580:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;2671:17;2744:34;;;2780:10;2792:7;2801:8;2721:89;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2721:89:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;2691:156;;;2824:13;;;;2691:156;;:::i;:::-;;;;-1:-1:-1;;2691:156:69;;;;;;;;;;-1:-1:-1;2858:34:69;:28;2866:6;2858:28;2691:156;2858:28;:34::i;:::-;;2433:466;;;;;:::o;2126:88::-;2201:6;2126:88;:::o;3077:273::-;3159:27;3179:6;3159:19;:27::i;:::-;3155:100;;;3211:33;3237:6;3211:25;:33::i;:::-;3202:42;;3155:100;3301:5;:13;;;3323:10;:8;:10::i;:::-;3336:6;3301:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3077:273;;:::o;1229:123:79:-;1308:37;1334:3;1339:5;1308:25;:37::i;:::-;1229:123;;:::o;1101:122::-;1166:4;1189:27;1209:6;1189:19;:27::i;:::-;1182:34;1101:122;-1:-1:-1;;1101:122:79:o;3525:153:69:-;3603:13;3640:31;3667:3;3640:26;:31::i;:::-;3628:43;3525:153;-1:-1:-1;;;3525:153:69:o;6626:375::-;6701:7;6721:12;6735:13;6752:31;6779:3;6752:26;:31::i;:::-;6720:63;;;;6798:33;6827:3;6798:28;:33::i;:::-;6794:179;;;6947:1;6941:4;6934:15;6989:5;6626:375;-1:-1:-1;;;6626:375:69:o;3494:278:48:-;3569:12;3653;3667:23;3694:6;:11;;3706:4;3694:17;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3652:59;;;;3728:37;3745:7;3754:10;3728:16;:37::i;:::-;3721:44;3494:278;-1:-1:-1;;;;;3494:278:48:o;4796:358:69:-;4998:66;4989:75;5081:66;4988:159;;4796:358::o;5878:392::-;5969:12;5984:20;6000:3;5984:15;:20::i;:::-;6235:19;;;;-1:-1:-1;;6221:43:69:o;7195:404::-;7266:12;7280:13;7312:20;7328:3;7312:15;:20::i;:::-;7305:27;;7578:4;7572:11;7563:20;;7549:44;;;:::o;5271:505::-;5620:66;5611:75;5703:66;5610:159;;5271:505::o;5057:714:48:-;5145:12;5173:7;5169:596;;;-1:-1:-1;5203:10:48;5196:17;;5169:596;5314:17;;:21;5310:445;;5571:10;5565:17;5631:15;5618:10;5614:2;5610:19;5603:44;5520:145;5703:37;11712:3:14;5703:7:48;:37::i;7755:595:69:-;7815:7;8341:1;8286:27;8309:3;8286:22;:27::i;:::-;8315:20;8269:67;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;8269:67:69;;;;;;8259:78;;8269:67;8259:78;;;;8251:91;;7755:595;-1:-1:-1;;7755:595:69:o;1437:126:14:-;1484:28;1492:9;1484:28;:7;:28::i;:::-;1437:126;:::o;8541:174:69:-;8641:66;8635:72;;8541:174::o;1670:3378:14:-;4395:66;1732:18;4383:79;;;4601:66;4595:4;4588:80;4743:1;4737:4;4730:15;2871:2;2904:18;;;2949;;;2876:4;2945:29;;;3747:1;3838:14;2856:18;;;;3827:26;;;;2997:18;;;;3044;;;3040:29;;3859:2;3855:17;3823:50;3737:4;3743:18;;;;;;3733:29;3729:2;3725:38;3802:72;;;;3797:3;3793:82;4810:4;4803:26;1761:14;;;;;5036:3;;5026:14;1519:609:-1;;;;;1673:2;1661:9;1652:7;1648:23;1644:32;1641:2;;;-1:-1;;1679:12;1641:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1731:63;-1:-1;1831:2;1867:22;;206:20;231:30;206:20;231:30;:::i;:::-;1839:60;-1:-1;1964:2;1949:18;;1936:32;1988:18;1977:30;;;1974:2;;;-1:-1;;2010:12;1974:2;2095:6;2084:9;2080:22;;;536:3;529:4;521:6;517:17;513:27;503:2;;-1:-1;;544:12;503:2;587:6;574:20;1988:18;606:6;603:30;600:2;;;-1:-1;;636:12;600:2;731:3;1831:2;711:17;672:6;697:32;;694:41;691:2;;;-1:-1;;738:12;691:2;1635:493;;;;-1:-1;;1831:2;668:17;;-1:-1;;;1635:493::o;2135:257::-;;2247:2;2235:9;2226:7;2222:23;2218:32;2215:2;;;-1:-1;;2253:12;2215:2;354:6;348:13;366:30;390:5;366:30;:::i;2399:345::-;;2512:2;;2500:9;2491:7;2487:23;2483:32;2480:2;;;-1:-1;;2518:12;2480:2;2576:17;2563:31;2614:18;;2606:6;2603:30;2600:2;;;-1:-1;;2636:12;2600:2;2711:6;2700:9;2696:22;;;868:3;861:4;853:6;849:17;845:27;835:2;;-1:-1;;876:12;835:2;923:6;910:20;2614:18;10389:6;10386:30;10383:2;;;-1:-1;;10419:12;10383:2;10053;10047:9;2512:2;-1:-1;;861:4;10477:6;10473:17;10469:33;10083:6;10079:17;;10190:6;10178:10;10175:22;2614:18;10142:10;10139:34;10136:62;10133:2;;;-1:-1;;10201:12;10133:2;10053;10220:22;1015:21;;;1115:16;;;;;1112:25;-1:-1;1109:2;;;-1:-1;;1140:12;1109:2;12589:6;2512:2;1057:6;1053:17;2512:2;1091:5;1087:16;12566:30;12627:16;;;;;;12620:27;;;;-1:-1;1091:5;2474:270;-1:-1;;;2474:270::o;2751:396::-;;;2887:2;2875:9;2866:7;2862:23;2858:32;2855:2;;;-1:-1;;2893:12;2855:2;1310:6;1297:20;1322:48;1364:5;1322:48;:::i;:::-;2945:78;3060:2;3099:22;;;;1449:20;;-1:-1;;;2849:298::o;3154:241::-;;3258:2;3246:9;3237:7;3233:23;3229:32;3226:2;;;-1:-1;;3264:12;3226:2;-1:-1;1449:20;;3220:175;-1:-1;3220:175::o;3402:366::-;;;3523:2;3511:9;3502:7;3498:23;3494:32;3491:2;;;-1:-1;;3529:12;3491:2;-1:-1;;1449:20;;;3681:2;3720:22;;;1449:20;;-1:-1;3485:283::o;6328:271::-;;5160:5;10669:12;5271:52;5316:6;5311:3;5304:4;5297:5;5293:16;5271:52;:::i;:::-;5335:16;;;;;6462:137;-1:-1;;6462:137::o;6606:448::-;;5160:5;10669:12;5271:52;5316:6;5311:3;5304:4;5297:5;5293:16;5271:52;:::i;:::-;5335:16;;12589:6;12584:3;5335:16;12566:30;12627:16;;;12620:27;;;-1:-1;12627:16;6796:258;-1:-1;;6796:258::o;7061:392::-;4239:58;;;7314:2;7305:12;;4239:58;7416:12;;;7205:248::o;7460:464::-;11767:42;11756:54;;;3862:45;;11756:54;;;;7833:2;7818:18;;3862:45;11476:13;;11469:21;7910:2;7895:18;;4104:34;7653:2;7638:18;;7624:300::o;7931:333::-;11767:42;11756:54;;;;3862:45;;8250:2;8235:18;;4239:58;8086:2;8071:18;;8057:207::o;8271:210::-;11476:13;;11469:21;4104:34;;8392:2;8377:18;;8363:118::o;8488:306::-;;8633:2;8654:17;8647:47;4792:5;10669:12;10825:6;8633:2;8622:9;8618:18;10813:19;4885:52;4930:6;10853:14;8622:9;10853:14;8633:2;4911:5;4907:16;4885:52;:::i;:::-;13188:2;13168:14;-1:-1;;13164:28;4949:39;;;;10853:14;4949:39;;8604:190;-1:-1;;8604:190::o;8801:272::-;11767:42;11756:54;;;;5459:75;;8953:2;8938:18;;8924:149::o;9339:416::-;9539:2;9553:47;;;5934:2;9524:18;;;10813:19;5970:33;10853:14;;;5950:54;6023:12;;;9510:245::o;9762:222::-;4239:58;;;9889:2;9874:18;;9860:124::o;12662:268::-;12727:1;12734:101;12748:6;12745:1;12742:13;12734:101;;;12815:11;;;12809:18;12796:11;;;12789:39;12770:2;12763:10;12734:101;;;12850:6;12847:1;12844:13;12841:2;;;12727:1;12906:6;12901:3;12897:16;12890:27;12841:2;;12711:219;;;:::o;13205:117::-;11767:42;13292:5;11756:54;13267:5;13264:35;13254:2;;13313:1;;13303:12;13329:111;13410:5;11476:13;11469:21;13388:5;13385:32;13375:2;;13431:1;;13421:12"},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","bytesTunnel(bytes)":"56cc064e","getChainedReferenceValue(uint256)":"5967b696","getEntrypoint()":"7fd0e5d5","getVault()":"8d928af8","isChainedReference(uint256)":"ec6edf00","peekChainedReferenceValue(uint256)":"f3cab685","setChainedReferenceValue(uint256,uint256)":"c518e531","setRelayerApproval(address,bool,bytes)":"80db15bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"ChainedReferenceValueRead\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"bytesTunnel\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"getChainedReferenceValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEntrypoint\",\"outputs\":[{\"internalType\":\"contract IBalancerRelayer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"isChainedReference\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setChainedReferenceValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"authorisation\",\"type\":\"bytes\"}],\"name\":\"setRelayerApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approveVault(address,uint256)\":{\"details\":\"This is needed to avoid having to send intermediate tokens back to the user\"},\"peekChainedReferenceValue(uint256)\":{\"details\":\"It does not alter the reference (even if it's marked as temporary).\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveVault(address,uint256)\":{\"notice\":\"Approves the Vault to use tokens held in the relayer\"},\"peekChainedReferenceValue(uint256)\":{\"notice\":\"Returns the amount referenced by chained reference `ref`.\"},\"setRelayerApproval(address,bool,bytes)\":{\"notice\":\"Sets whether a particular relayer is authorised to act on behalf of the user\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockBaseRelayerLibrary.sol\":\"MockBaseRelayerLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":{\"keccak256\":\"0x00d423628736cf6e571187b6327a8ab9fdf947283582345cc6048ca3086b79a0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://919890e34754f13e43d3bc3f6f07674c4db0f2faf4fe7d1e8246d5513628ac72\",\"dweb:/ipfs/QmSqhMvXntJFgP7EmfZKrVG8t3oQqweYg4WWnV1JNnFUTu\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/BalancerRelayer.sol\":{\"keccak256\":\"0xb69401485af333ad66e7cc091da40d25354de1870f64584d017909da9f8a8e7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e34ee5869335a6fede8b62e5ee6f81bd714b88f58fe4bf4d991d44372333627d\",\"dweb:/ipfs/QmQvEA5R5HXbyPYYC3GEeDwqcBAfsU5kLvRiNByyJqVXrx\"]},\"contracts/relayer/BaseRelayerLibrary.sol\":{\"keccak256\":\"0x52c5a0fa32cb38dfe008f6170491ca81fe394cba0fa9d6cbd13ac12fc9b2471a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8716ef72fa4f61bd91d450d5a29771e346e8ed59f30b6a74b53c6d59c0212e03\",\"dweb:/ipfs/QmTqGY7JoMF7WBNzgPFSfhFS3QkYRwEUJq6UJnTxNSnvuJ\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]},\"contracts/test/MockBaseRelayerLibrary.sol\":{\"keccak256\":\"0xa17d727ab4a6f90276bc8e0116e1985b201f44121e8cd834c725c43483cf8532\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5c35cfe80e6f43bc434fc33735c00a9b739513b7a4ee10c1fe9d03cbf2d40f6d\",\"dweb:/ipfs/QmdNPJCk5ntmDpGg5pxPGfLqyLdmritYu3MpZPhSKuG1i8\"]}},\"version\":1}"}},"contracts/test/MockBatchRelayerLibrary.sol":{"MockBatchRelayerLibrary":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IERC20","name":"wstETH","type":"address"},{"internalType":"contract IBalancerMinter","name":"minter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"ChainedReferenceValueRead","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"int256[]","name":"limits","type":"int256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"batchSwap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum VaultActions.PoolKind","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"exitPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge[]","name":"gauges","type":"address[]"}],"name":"gaugeClaimRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"gaugeDeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"gaugeMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"gaugeSetMinterApproval","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"gaugeWithdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"getChainedReferenceValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getEntrypoint","outputs":[{"internalType":"contract IBalancerRelayer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum VaultActions.PoolKind","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"joinPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"enum IVault.UserBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"}],"internalType":"struct IVault.UserBalanceOp[]","name":"ops","type":"tuple[]"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manageUserBalance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setChainedReferenceValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"relayer","type":"address"},{"internalType":"bool","name":"approved","type":"bool"},{"internalType":"bytes","name":"authorisation","type":"bytes"}],"name":"setRelayerApproval","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"stakeETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"stakeETHAndWrap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStaticATokenLM","name":"staticToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapAaveStaticToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapERC4626","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IReaperTokenVault","name":"vaultToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapReaperVaultToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUnbuttonToken","name":"wrapperToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapUnbuttonToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapWstETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20Permit","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"vaultPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20PermitDAI","name":"token","type":"address"},{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"vaultPermitDAI","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStaticATokenLM","name":"staticToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"fromUnderlying","type":"bool"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapAaveDynamicToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapERC4626","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IReaperTokenVault","name":"vaultToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapReaperVaultToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapStETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUnbuttonToken","name":"wrapperToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapUnbuttonToken","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101606040527fae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb50960e0523480156200003657600080fd5b5060405162005abc38038062005abc83398101604081905262000059916200020f565b828282818184806001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009957600080fd5b505afa158015620000ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d4919062000262565b6001600160601b0319606091821b81166080529082901b1660a05260405181903090620001019062000201565b6200010e92919062000288565b604051809103906000f0801580156200012b573d6000803e3d6000fd5b506001600160601b0319606091821b811660c05292901b90911661010052506001600160a01b03811662000161576000620001d8565b806001600160a01b031663c1fe3e486040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200019d57600080fd5b505af1158015620001b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d8919062000262565b6001600160601b0319606091821b81166101205291901b166101405250620002bb945050505050565b610787806200533583390190565b60008060006060848603121562000224578283fd5b83516200023181620002a2565b60208501519093506200024481620002a2565b60408501519092506200025781620002a2565b809150509250925092565b60006020828403121562000274578081fd5b81516200028181620002a2565b9392505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0381168114620002b857600080fd5b50565b60805160601c60a05160601c60c05160601c60e0516101005160601c6101205160601c6101405160601c614fd86200035d6000398061056f5280610603528061066952806109ef5280610a9f5280610b685280612a3b5280612a9352508061096d52806109c25280610c305280610d0f5280612b5c525080610ea25280611ba3525080613338525080611a4d525080611b4d5280611c9a525050614fd86000f3fe6080604052600436106101d85760003560e01c806380db15bd11610102578063c518e53111610095578063e8210e3c11610064578063e8210e3c14610421578063ecc0263714610434578063efe6910814610447578063f3cab6851461045a576101d8565b8063c518e531146103c8578063d293f290146103e8578063d80952d5146103fb578063db4c0e911461040e576101d8565b80638fe4624f116100d15780638fe4624f1461036f578063959fc17a14610382578063abf6d39914610395578063b6d24737146103a8576101d8565b806380db15bd146103215780638c57198b146103345780638d64cfbc146103475780638d928af81461035a576101d8565b8063433b08651161017a5780636d307ea8116101495780636d307ea8146102bd5780637ab6e03c146102d05780637bc008f5146102e35780637fd0e5d5146102f6576101d8565b8063433b0865146102645780635967b69614610277578063611b90dd1461029757806365ca4804146102aa576101d8565b80631c982441116101b65780631c982441146102185780632cbec84e1461022b5780632e6272ea1461023e5780633f85d39014610251576101d8565b80630e248fea146101dd5780631089e5e3146101f25780631836944614610205575b600080fd5b6101f06101eb366004613d90565b610487565b005b6101f0610200366004613d12565b610522565b6101f06102133660046143d1565b61070c565b6101f0610226366004613c40565b610915565b6101f0610239366004613d12565b610c12565b6101f061024c3660046144cd565b610d46565b6101f061025f366004613d46565b610e6f565b6101f061027236600461428b565b610f38565b34801561028357600080fd5b506101f06102923660046145bb565b6111e7565b6101f06102a53660046141e1565b611229565b6101f06102b836600461423b565b611344565b6101f06102cb3660046141e1565b611537565b6101f06102de36600461428b565b611759565b6101f06102f136600461423b565b61185f565b34801561030257600080fd5b5061030b611a4b565b6040516103189190614854565b60405180910390f35b6101f061032f366004613c85565b611a6f565b6101f0610342366004613f2d565b611b73565b6101f0610355366004614148565b611c1e565b34801561036657600080fd5b5061030b611c98565b6101f061037d366004614038565b611cbc565b6101f06103903660046140c7565b611ee6565b6101f06103a33660046141e1565b611f63565b3480156103b457600080fd5b506101f06103c33660046141b6565b612119565b3480156103d457600080fd5b506101f06103e33660046145eb565b6121bf565b6101f06103f63660046141e1565b6121cd565b6101f0610409366004613f90565b612455565b6101f061041c366004613c40565b6129e3565b6101f061042f3660046141e1565b612b93565b6101f0610442366004613e60565b612e58565b6101f06104553660046141e1565b612f50565b34801561046657600080fd5b5061047a6104753660046145bb565b612ff9565b6040516103189190614e9f565b8060005b8181101561051c5783838281811061049f57fe5b90506020020160208101906104b49190613c08565b6001600160a01b03166384e9bd7e336040518263ffffffff1660e01b81526004016104df9190614854565b600060405180830381600087803b1580156104f957600080fd5b505af115801561050d573d6000803e3d6000fd5b5050505080600101905061048b565b50505050565b61052b8261300b565b1561053c5761053982613056565b91505b6040517fb0e389000000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b0e38900906105a4908690600401614e9f565b60206040518083038186803b1580156105bc57600080fd5b505afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f491906145d3565b90506106296001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684613081565b6001600160a01b03841630146106f4576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906106a090879085906004016149b4565b602060405180830381600087803b1580156106ba57600080fd5b505af11580156106ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f29190613f11565b505b6106fd8261300b565b1561051c5761051c82826130fb565b3361071a6020890189613c08565b6001600160a01b031614806107435750306107386020890189613c08565b6001600160a01b0316145b6107685760405162461bcd60e51b815260040161075f90614d6f565b60405180910390fd5b60005b8a518110156107cd5760008b828151811061078257fe5b60200260200101516060015190506107998161300b565b156107c4576107a781613056565b8c83815181106107b357fe5b602002602001015160600181815250505b5060010161076b565b5060606107d8611c98565b6001600160a01b031663945bcec9858e8e8e8e8e8e8e8e6040518a63ffffffff1660e01b8152600401610812989796959493929190614c66565b6000604051808303818588803b15801561082b57600080fd5b505af115801561083f573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526108689190810190613dd0565b905060005b828110156109065761089384848381811061088457fe5b9050604002016020013561300b565b6108af5760405162461bcd60e51b815260040161075f90614ddd565b6108fe8484838181106108be57fe5b905060400201602001356108f9848787868181106108d857fe5b90506040020160000135815181106108ec57fe5b602002602001015161310e565b6130fb565b60010161086d565b50505050505050505050505050565b61091e8261300b565b1561092f5761092c82613056565b91505b6001600160a01b0384163014610992576001600160a01b03841633146109675760405162461bcd60e51b815260040161075f90614d6f565b610992847f000000000000000000000000000000000000000000000000000000000000000084613128565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390610a19907f00000000000000000000000000000000000000000000000000000000000000009086906004016149b4565b602060405180830381600087803b158015610a3357600080fd5b505af1158015610a47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6b9190613f11565b506040517fea598cb00000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ea598cb090610ad4908690600401614e9f565b602060405180830381600087803b158015610aee57600080fd5b505af1158015610b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2691906145d3565b90506001600160a01b0384163014610bf3576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90610b9f90879085906004016149b4565b602060405180830381600087803b158015610bb957600080fd5b505af1158015610bcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf19190613f11565b505b610bfc8261300b565b15610c0b57610c0b82826130fb565b5050505050565b610c1b8261300b565b15610c2c57610c2982613056565b91505b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a1903eab84306040518363ffffffff1660e01b8152600401610c7b9190614854565b6020604051808303818588803b158015610c9457600080fd5b505af1158015610ca8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ccd91906145d3565b90506001600160a01b03841630146106f4576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906106a090879085906004016149b4565b33610d546020870187613c08565b6001600160a01b03161480610d7d575030610d726020870187613c08565b6001600160a01b0316145b610d995760405162461bcd60e51b815260040161075f90614d6f565b610da6866080015161300b565b15610dbe57610db88660800151613056565b60808701525b6000610dc8611c98565b6001600160a01b03166352bbbe2984898989896040518663ffffffff1660e01b8152600401610dfa9493929190614e14565b6020604051808303818588803b158015610e1357600080fd5b505af1158015610e27573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e4c91906145d3565b9050610e578261300b565b15610e6657610e6682826130fb565b50505050505050565b6040517f3b9f73840000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633b9f738490610edb90879087903390600401614a1c565b602060405180830381600087803b158015610ef557600080fd5b505af1158015610f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2d91906145d3565b90506106fd8261300b565b610f418361300b565b15610f5257610f4f83613056565b92505b600082610fd157866001600160a01b03166351c0e0616040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f9457600080fd5b505af1158015610fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcc9190613c24565b611044565b866001600160a01b0316634800d97f6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561100c57600080fd5b505af1158015611020573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110449190613c24565b90506001600160a01b0386163014611089576001600160a01b038616331461107e5760405162461bcd60e51b815260040161075f90614d6f565b611089868286613128565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b3906110d0908a9088906004016149b4565b602060405180830381600087803b1580156110ea57600080fd5b505af11580156110fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111229190613f11565b506040517f2f2cab870000000000000000000000000000000000000000000000000000000081526000906001600160a01b03891690632f2cab8790611171908990899086908a906004016149f0565b602060405180830381600087803b15801561118b57600080fd5b505af115801561119f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c391906145d3565b90506111ce8361300b565b156111dd576111dd83826130fb565b5050505050505050565b7fc78533b5d3aff901cb655b9491c67366edabc3cd9cb680c3934f61d7eb07875261121182613056565b60405161121e9190614e9f565b60405180910390a150565b6112328261300b565b156112435761124082613056565b91505b6001600160a01b0384163014611286576001600160a01b038416331461127b5760405162461bcd60e51b815260040161075f90614d6f565b611286848684613128565b6040517fea785a5e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b0387169063ea785a5e906112d090879087906004016149b4565b602060405180830381600087803b1580156112ea57600080fd5b505af11580156112fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132291906145d3565b905061132d8261300b565b1561133c5761133c82826130fb565b505050505050565b61134d8161300b565b1561135e5761135b81613056565b90505b6001600160a01b03831630146113a1576001600160a01b03831633146113965760405162461bcd60e51b815260040161075f90614d6f565b6113a1838583613128565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526001600160a01b03851690632e1a7d4d906113e6908490600401614e9f565b600060405180830381600087803b15801561140057600080fd5b505af1158015611414573d6000803e3d6000fd5b505050506001600160a01b038216301461051c576000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561146357600080fd5b505afa158015611477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149b9190613c24565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0382169063a9059cbb906114e590869086906004016149b4565b602060405180830381600087803b1580156114ff57600080fd5b505af1158015611513573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133c9190613f11565b6115408261300b565b156115515761154e82613056565b91505b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561158c57600080fd5b505afa1580156115a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c49190613c24565b90506001600160a01b0385163014611609576001600160a01b03851633146115fe5760405162461bcd60e51b815260040161075f90614d6f565b611609858285613128565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b39061165090899087906004016149b4565b602060405180830381600087803b15801561166a57600080fd5b505af115801561167e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a29190613f11565b506040517f6e553f650000000000000000000000000000000000000000000000000000000081526000906001600160a01b03881690636e553f65906116ed9087908990600401614ea8565b602060405180830381600087803b15801561170757600080fd5b505af115801561171b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173f91906145d3565b905061174a8361300b565b15610e6657610e6683826130fb565b6117628361300b565b156117735761177083613056565b92505b6001600160a01b03851630146117b6576001600160a01b03851633146117ab5760405162461bcd60e51b815260040161075f90614d6f565b6117b6858785613128565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081526000906001600160a01b0388169063ead5d35990611802908890889088906004016149cd565b6040805180830381600087803b15801561181b57600080fd5b505af115801561182f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611853919061460c565b915050610e578261300b565b6118688161300b565b156118795761187681613056565b90505b6000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b1580156118b457600080fd5b505afa1580156118c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ec9190613c24565b90506001600160a01b0384163014611931576001600160a01b03841633146119265760405162461bcd60e51b815260040161075f90614d6f565b611931848284613128565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b39061197890889086906004016149b4565b602060405180830381600087803b15801561199257600080fd5b505af11580156119a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ca9190613f11565b506040517f6e553f650000000000000000000000000000000000000000000000000000000081526001600160a01b03861690636e553f6590611a129085908790600401614ea8565b600060405180830381600087803b158015611a2c57600080fd5b505af1158015611a40573d6000803e3d6000fd5b505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b038416301480611a84575082155b611aa05760405162461bcd60e51b815260040161075f90614da6565b606063fa6e671d60e01b338686604051602401611abf93929190614868565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935251611b2e928691869101614821565b60408051601f19818403018152919052905061133c6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016826131c4565b6040517fc65427940000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c654279490611be49030908a908a908a908a908a908a90600401614970565b600060405180830381600087803b158015611bfe57600080fd5b505af1158015611c12573d6000803e3d6000fd5b50505050505050505050565b866001600160a01b031663d505accf87611c36611c98565b88888888886040518863ffffffff1660e01b8152600401611c5d979695949392919061492f565b600060405180830381600087803b158015611c7757600080fd5b505af1158015611c8b573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b038516331480611cdb57506001600160a01b03851630145b611cf75760405162461bcd60e51b815260040161075f90614d6f565b6000611d028861323c565b90506000611d0f8361300b565b611d1a576000611daf565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038316906370a0823190611d5f908990600401614854565b60206040518083038186803b158015611d7757600080fd5b505afa158015611d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611daf91906145d3565b9050611dbf888660400151613242565b6040860152611dcc611c98565b6001600160a01b031663b95cac28858b8a8a8a6040518663ffffffff1660e01b8152600401611dfe9493929190614bc0565b6000604051808303818588803b158015611e1757600080fd5b505af1158015611e2b573d6000803e3d6000fd5b5050505050611e398361300b565b15611a40576040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038416906370a0823190611e86908a90600401614854565b60206040518083038186803b158015611e9e57600080fd5b505afa158015611eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed691906145d3565b9050611c12846108f98385613270565b876001600160a01b0316638fcbaf0c88611efe611c98565b8989898989896040518963ffffffff1660e01b8152600401611f279897969594939291906148e6565b600060405180830381600087803b158015611f4157600080fd5b505af1158015611f55573d6000803e3d6000fd5b505050505050505050505050565b611f6c8261300b565b15611f7d57611f7a82613056565b91505b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611fb857600080fd5b505afa158015611fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff09190613c24565b90506001600160a01b0385163014612035576001600160a01b038516331461202a5760405162461bcd60e51b815260040161075f90614d6f565b612035858285613128565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b39061207c90899087906004016149b4565b602060405180830381600087803b15801561209657600080fd5b505af11580156120aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ce9190613f11565b506040517f2f4f21e20000000000000000000000000000000000000000000000000000000081526000906001600160a01b03881690632f4f21e2906116ed90889088906004016149b4565b6121228161300b565b156121335761213081613056565b90505b816001600160a01b031663095ea7b361214a611c98565b836040518363ffffffff1660e01b81526004016121689291906149b4565b602060405180830381600087803b15801561218257600080fd5b505af1158015612196573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ba9190613f11565b505050565b6121c982826130fb565b5050565b6121d68261300b565b156121e7576121e482613056565b91505b6001600160a01b038416301461222a576001600160a01b038416331461221f5760405162461bcd60e51b815260040161075f90614d6f565b61222a848684613128565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561226557600080fd5b505afa158015612279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229d9190613c24565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03871690632e1a7d4d906122e5908690600401614e9f565b600060405180830381600087803b1580156122ff57600080fd5b505af1158015612313573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841691506370a082319061235f903090600401614854565b60206040518083038186803b15801561237757600080fd5b505afa15801561238b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123af91906145d3565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0383169063a9059cbb906123f990889085906004016149b4565b602060405180830381600087803b15801561241357600080fd5b505af1158015612427573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244b9190613f11565b5061174a8361300b565b6001600160a01b03851633148061247457506001600160a01b03851630145b6124905760405162461bcd60e51b815260040161075f90614d6f565b60608167ffffffffffffffff811180156124a957600080fd5b506040519080825280602002602001820160405280156124d3578160200160208202803683370190505b50905060608267ffffffffffffffff811180156124ef57600080fd5b50604051908082528060200260200182016040528015612519578160200160208202803683370190505b50905060005b838110156126895761253685858381811061088457fe5b6125525760405162461bcd60e51b815260040161075f90614ddd565b855160009086868481811061256357fe5b905060400201600001358151811061257757fe5b602002602001015190508660600151156125c55761259481613286565b8483815181106125a057fe5b60200260200101906001600160a01b031690816001600160a01b031681525050612680565b6125ce81613289565b61265b576125db81613286565b6001600160a01b03166370a08231896040518263ffffffff1660e01b81526004016126069190614854565b60206040518083038186803b15801561261e57600080fd5b505afa158015612632573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265691906145d3565b612667565b876001600160a01b0316315b83838151811061267357fe5b6020026020010181815250505b5060010161251f565b508460600151156127205761269c611c98565b6001600160a01b0316630f5a6efa87846040518363ffffffff1660e01b81526004016126c992919061488c565b60006040518083038186803b1580156126e157600080fd5b505afa1580156126f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261271d9190810190613ed6565b90505b61272e888660400151613296565b604086015261273b611c98565b6001600160a01b0316638bdb39138a8989896040518563ffffffff1660e01b815260040161276c9493929190614bc0565b600060405180830381600087803b15801561278657600080fd5b505af115801561279a573d6000803e3d6000fd5b50606092508591505067ffffffffffffffff811180156127b957600080fd5b506040519080825280602002602001820160405280156127e3578160200160208202803683370190505b509050856060015115612880576127f8611c98565b6001600160a01b0316630f5a6efa88856040518363ffffffff1660e01b815260040161282592919061488c565b60006040518083038186803b15801561283d57600080fd5b505afa158015612851573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128799190810190613ed6565b905061297e565b60005b8481101561297c57865160009087878481811061289c57fe5b90506040020160000135815181106128b057fe5b602002602001015190506128c381613289565b612950576128d081613286565b6001600160a01b03166370a082318a6040518263ffffffff1660e01b81526004016128fb9190614854565b60206040518083038186803b15801561291357600080fd5b505afa158015612927573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294b91906145d3565b61295c565b886001600160a01b0316315b83838151811061296857fe5b602090810291909101015250600101612883565b505b60005b84811015611c8b576129db86868381811061299857fe5b905060400201602001356108f98584815181106129b157fe5b60200260200101518585815181106129c557fe5b602002602001015161327090919063ffffffff16565b600101612981565b6129ec8261300b565b156129fd576129fa82613056565b91505b6001600160a01b0384163014612a60576001600160a01b0384163314612a355760405162461bcd60e51b815260040161075f90614d6f565b612a60847f000000000000000000000000000000000000000000000000000000000000000084613128565b6040517fde0e9a3e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063de0e9a3e90612ac8908690600401614e9f565b602060405180830381600087803b158015612ae257600080fd5b505af1158015612af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1a91906145d3565b90506001600160a01b0384163014610bf3576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90610b9f90879085906004016149b4565b612b9c8261300b565b15612bad57612baa82613056565b91505b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612be857600080fd5b505afa158015612bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c209190613c24565b90506001600160a01b0385163014612c65576001600160a01b0385163314612c5a5760405162461bcd60e51b815260040161075f90614d6f565b612c65858285613128565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b390612cac90899087906004016149b4565b602060405180830381600087803b158015612cc657600080fd5b505af1158015612cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cfe9190613f11565b506040517fb6b55f250000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063b6b55f2590612d44908690600401614e9f565b600060405180830381600087803b158015612d5e57600080fd5b505af1158015612d72573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03891691506370a0823190612dbe903090600401614854565b60206040518083038186803b158015612dd657600080fd5b505afa158015612dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0e91906145d3565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0388169063a9059cbb906123f990889085906004016149b4565b60005b82811015612eec5733848483818110612e7057fe5b905060a002016060016020810190612e889190613c08565b6001600160a01b03161480612ec8575030848483818110612ea557fe5b905060a002016060016020810190612ebd9190613c08565b6001600160a01b0316145b612ee45760405162461bcd60e51b815260040161075f90614d6f565b600101612e5b565b50612ef5611c98565b6001600160a01b0316630e8e3e848285856040518463ffffffff1660e01b8152600401612f23929190614a7c565b6000604051808303818588803b158015612f3c57600080fd5b505af11580156111dd573d6000803e3d6000fd5b612f598261300b565b15612f6a57612f6782613056565b91505b6001600160a01b0384163014612fad576001600160a01b0384163314612fa25760405162461bcd60e51b815260040161075f90614d6f565b612fad848684613128565b6040517fba0876520000000000000000000000000000000000000000000000000000000081526000906001600160a01b0387169063ba087652906112d090869088903090600401614ebf565b6000613004826132bd565b9392505050565b7fba100000000000000000000000000000000000000000000000000000000000007ffff00000000000000000000000000000000000000000000000000000000000008216145b919050565b6000806000613064846132bd565b91509150613071846132d4565b1561300457600082559392505050565b613090814710156101a361331b565b6000826001600160a01b0316826040516130a990613286565b60006040518083038185875af1925050503d80600081146130e6576040519150601f19603f3d011682016040523d82523d6000602084013e6130eb565b606091505b505090506121ba816101a461331b565b600061310683613329565b919091555050565b60008082136131205781600003613122565b815b92915050565b80613132576121ba565b60408051600180825281830190925260609160208083019080368337019050509050828160008151811061316257fe5b6001600160a01b03929092166020928302919091019091015260408051600180825281830190925260609181602001602082028036833701905050905082816000815181106131ad57fe5b602002602001018181525050610c0b858383613387565b606060006060846001600160a01b0316846040516131e29190614805565b6000604051808303816000865af19150503d806000811461321f576040519150601f19603f3d011682016040523d82523d6000602084013e613224565b606091505b509150915061323382826134c1565b95945050505050565b60601c90565b6060600083801561324f57fe5b14156132655761325e826134eb565b9050613122565b613122610136613528565b600061328083831115600161331b565b50900390565b90565b6001600160a01b03161590565b606060008380156132a357fe5b14156132b25761325e82613555565b613122610150613528565b6000806132c983613329565b915081549050915091565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b816121c9576121c981613528565b600060016133368361359e565b7f0000000000000000000000000000000000000000000000000000000000000000604051602001613368929190614846565b60408051808303601f1901815291905280516020909101200392915050565b6060825167ffffffffffffffff811180156133a157600080fd5b506040519080825280602002602001820160405280156133db57816020015b6133c86137ec565b8152602001906001900390816133c05790505b50905060005b8351811015613473576040805160a08101909152806003815260200185838151811061340957fe5b60200260200101516001600160a01b0316815260200184838151811061342b57fe5b60200260200101518152602001866001600160a01b03168152602001306001600160a01b031681525082828151811061346057fe5b60209081029190910101526001016133e1565b5061347c611c98565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b81526004016134a79190614b2a565b600060405180830381600087803b158015612f3c57600080fd5b606082156134d0575080613122565b8151156134e05781518083602001fd5b6131226101ae613528565b606060006134f8836135c1565b9050600181600381111561350857fe5b141561351f57613517836135d7565b915050613051565b82915050613051565b613552817f42414c0000000000000000000000000000000000000000000000000000000000613685565b50565b60606000613562836135c1565b9050600081600381111561357257fe5b141561358157613517836136e6565b600181600381111561358f57fe5b141561351f5761351783613749565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b60008180602001905181019061312291906142fa565b60608060006135e58461379c565b915091506000805b835181101561364b57600084828151811061360457fe5b602002602001015190506136178161300b565b156136425761362581613056565b85838151811061363157fe5b602002602001018181525050600192505b506001016135ed565b50806136575784613233565b6001838360405160200161366d93929190614c34565b60405160208183030381529060405295945050505050565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60606000806136f4846137bf565b915091506137018261300b565b1561373f5761370f82613056565b91506000828260405160200161372793929190614c13565b60405160208183030381529060405292505050613051565b8392505050613051565b60606000613756836137d6565b90506137618161300b565b1561351f5761376f81613056565b9050600181604051602001613785929190614bfc565b604051602081830303815290604052915050613051565b60606000828060200190518101906137b49190614379565b909590945092505050565b600080828060200190518101906137b49190614343565b6000818060200190518101906130049190614316565b6040805160a081019091528060008152600060208201819052604082018190526060820181905260809091015290565b803561312281614f72565b60008083601f840112613838578182fd5b50813567ffffffffffffffff81111561384f578182fd5b602083019150836020808302850101111561386957600080fd5b9250929050565b600082601f830112613880578081fd5b813561389361388e82614f05565b614ede565b8181529150602080830190848101818402860182018710156138b457600080fd5b60005b848110156138dc5781356138ca81614f72565b845292820192908201906001016138b7565b505050505092915050565b600082601f8301126138f7578081fd5b813561390561388e82614f05565b818152915060208083019084810160005b848110156138dc578135870160a080601f19838c0301121561393757600080fd5b61394081614ede565b85830135815260408084013587830152606080850135828401526080915081850135818401525082840135925067ffffffffffffffff83111561398257600080fd5b6139908c8885870101613ab2565b90820152865250509282019290820190600101613916565b60008083601f8401126139b9578182fd5b50813567ffffffffffffffff8111156139d0578182fd5b60208301915083602060408302850101111561386957600080fd5b600082601f8301126139fb578081fd5b8135613a0961388e82614f05565b818152915060208083019084810181840286018201871015613a2a57600080fd5b60005b848110156138dc57813584529282019290820190600101613a2d565b600082601f830112613a59578081fd5b8151613a6761388e82614f05565b818152915060208083019084810181840286018201871015613a8857600080fd5b60005b848110156138dc57815184529282019290820190600101613a8b565b803561312281614f87565b600082601f830112613ac2578081fd5b813567ffffffffffffffff811115613ad8578182fd5b613aeb6020601f19601f84011601614ede565b9150808252836020828501011115613b0257600080fd5b8060208401602084013760009082016020015292915050565b80356001811061312257600080fd5b80356002811061312257600080fd5b600060808284031215613b4a578081fd5b613b546080614ede565b9050813567ffffffffffffffff80821115613b6e57600080fd5b613b7a85838601613870565b83526020840135915080821115613b9057600080fd5b613b9c858386016139eb565b60208401526040840135915080821115613bb557600080fd5b50613bc284828501613ab2565b604083015250613bd58360608401613aa7565b606082015292915050565b600060808284031215613bf1578081fd5b50919050565b803560ff8116811461312257600080fd5b600060208284031215613c19578081fd5b813561300481614f72565b600060208284031215613c35578081fd5b815161300481614f72565b60008060008060808587031215613c55578283fd5b8435613c6081614f72565b93506020850135613c7081614f72565b93969395505050506040820135916060013590565b60008060008060608587031215613c9a578182fd5b8435613ca581614f72565b93506020850135613cb581614f87565b9250604085013567ffffffffffffffff80821115613cd1578384fd5b818701915087601f830112613ce4578384fd5b813581811115613cf2578485fd5b886020828501011115613d03578485fd5b95989497505060200194505050565b600080600060608486031215613d26578081fd5b8335613d3181614f72565b95602085013595506040909401359392505050565b600080600060408486031215613d5a578081fd5b833567ffffffffffffffff811115613d70578182fd5b613d7c86828701613827565b909790965060209590950135949350505050565b60008060208385031215613da2578182fd5b823567ffffffffffffffff811115613db8578283fd5b613dc485828601613827565b90969095509350505050565b60006020808385031215613de2578182fd5b825167ffffffffffffffff811115613df8578283fd5b8301601f81018513613e08578283fd5b8051613e1661388e82614f05565b8181528381019083850185840285018601891015613e32578687fd5b8694505b83851015613e54578051835260019490940193918501918501613e36565b50979650505050505050565b600080600060408486031215613e74578081fd5b833567ffffffffffffffff80821115613e8b578283fd5b818601915086601f830112613e9e578283fd5b813581811115613eac578384fd5b87602060a083028501011115613ec0578384fd5b6020928301989097509590910135949350505050565b600060208284031215613ee7578081fd5b815167ffffffffffffffff811115613efd578182fd5b613f0984828501613a49565b949350505050565b600060208284031215613f22578081fd5b815161300481614f87565b60008060008060008060c08789031215613f45578384fd5b8635613f5081614f87565b95506020870135613f6081614f72565b945060408701359350613f768860608901613bf7565b92506080870135915060a087013590509295509295509295565b600080600080600080600060c0888a031215613faa578485fd5b87359650613fbb8960208a01613b1b565b95506040880135613fcb81614f72565b94506060880135613fdb81614f72565b9350608088013567ffffffffffffffff80821115613ff7578283fd5b6140038b838c01613b39565b945060a08a0135915080821115614018578283fd5b506140258a828b016139a8565b989b979a50959850939692959293505050565b600080600080600080600060e0888a031215614052578081fd5b873596506140638960208a01613b1b565b9550604088013561407381614f72565b9450606088013561408381614f72565b9350608088013567ffffffffffffffff81111561409e578182fd5b6140aa8a828b01613b39565b93505060a0880135915060c0880135905092959891949750929550565b600080600080600080600080610100898b0312156140e3578182fd5b88356140ee81614f72565b975060208901356140fe81614f72565b96506040890135955060608901359450608089013561411c81614f87565b935061412b8a60a08b01613bf7565b925060c0890135915060e089013590509295985092959890939650565b600080600080600080600060e0888a031215614162578081fd5b873561416d81614f72565b9650602088013561417d81614f72565b9550604088013594506060880135935061419a8960808a01613bf7565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156141c8578182fd5b82356141d381614f72565b946020939093013593505050565b600080600080600060a086880312156141f8578283fd5b853561420381614f72565b9450602086013561421381614f72565b9350604086013561422381614f72565b94979396509394606081013594506080013592915050565b60008060008060808587031215614250578182fd5b843561425b81614f72565b9350602085013561426b81614f72565b9250604085013561427b81614f72565b9396929550929360600135925050565b60008060008060008060c087890312156142a3578384fd5b86356142ae81614f72565b955060208701356142be81614f72565b945060408701356142ce81614f72565b93506060870135925060808701356142e581614f87565b8092505060a087013590509295509295509295565b60006020828403121561430b578081fd5b815161300481614f95565b60008060408385031215614328578182fd5b825161433381614f95565b6020939093015192949293505050565b600080600060608486031215614357578081fd5b835161436281614f95565b602085015160409095015190969495509392505050565b60008060006060848603121561438d578081fd5b835161439881614f95565b602085015190935067ffffffffffffffff8111156143b4578182fd5b6143c086828701613a49565b925050604084015190509250925092565b60008060008060008060008060008060006101608c8e0312156143f2578485fd5b6143fc8d8d613b2a565b9a5067ffffffffffffffff8060208e01351115614417578586fd5b6144278e60208f01358f016138e7565b9a508060408e01351115614439578586fd5b6144498e60408f01358f01613827565b909a50985061445b8e60608f01613be0565b97508060e08e0135111561446d578586fd5b61447d8e60e08f01358f01613827565b90975095506101008d013594506101208d013593506101408d01358110156144a3578283fd5b506144b58d6101408e01358e016139a8565b81935080925050509295989b509295989b9093969950565b60008060008060008061012087890312156144e6578384fd5b863567ffffffffffffffff808211156144fd578586fd5b9088019060c0828b031215614510578586fd5b61451a60c0614ede565b8235815261452b8b60208501613b2a565b6020820152604083013561453e81614f72565b60408201526145508b6060850161381c565b60608201526080830135608082015260a083013582811115614570578788fd5b61457c8c828601613ab2565b60a0830152508098505050506145958860208901613be0565b959895975050505060a08401359360c08101359360e08201359350610100909101359150565b6000602082840312156145cc578081fd5b5035919050565b6000602082840312156145e4578081fd5b5051919050565b600080604083850312156145fd578182fd5b50508035926020909101359150565b6000806040838503121561461e578182fd5b505080516020909101519092909150565b6001600160a01b03169052565b60008284526020808501945082825b8581101561467957813561465e81614f72565b6001600160a01b03168752958201959082019060010161464b565b509495945050505050565b60008284526020808501945082825b8581101561467957813587529582019590820190600101614693565b6000815180845260208085019450808401835b83811015614679578151875295820195908201906001016146c2565b15159052565b600081518084526146fc816020860160208601614f32565b601f01601f19169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b818110156147555783516001600160a01b031683529284019291840191600101614730565b50508285015191508581038387015261476e81836146af565b925050506040830151848203604086015261478982826146e4565b915050606083015161479e60608601826146de565b509392505050565b80356147b181614f72565b6001600160a01b0390811683526020820135906147cd82614f87565b90151560208401526040820135906147e482614f72565b16604083015260608101356147f881614f87565b8015156060840152505050565b60008251614817818460208701614f32565b9190910192915050565b60008451614833818460208901614f32565b8201838582379092019182525092915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6000604082016001600160a01b03808616845260206040818601528286518085526060870191508288019450855b818110156148d85785518516835294830194918301916001016148ba565b509098975050505050505050565b6001600160a01b039889168152969097166020870152604086019490945260608501929092521515608084015260ff1660a083015260c082015260e08101919091526101000190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0397881681529515156020870152939095166040850152606084019190915260ff16608083015260a082019290925260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b6001600160a01b03949094168452602084019290925261ffff1660408301521515606082015260800190565b6040808252810183905260008460608301825b86811015614a5f5760208335614a4481614f72565b6001600160a01b031683529283019290910190600101614a2f565b5080925050506001600160a01b0383166020830152949350505050565b6020808252818101839052600090604080840186845b87811015614b1d578135614aa581614f95565b614aae81614f5e565b835281850135614abd81614f72565b6001600160a01b03168386015281840135848401526060614ae081840184614f25565b614aec8286018261462f565b50506080614afc81840184614f25565b614b088286018261462f565b505060a0928301929190910190600101614a92565b5090979650505050505050565b602080825282518282018190526000919060409081850190868401855b82811015614bb35781518051614b5c81614f5e565b8552808701516001600160a01b0316878601528581015186860152606080820151614b898288018261462f565b505060809081015190614b9e8682018361462f565b505060a0939093019290850190600101614b47565b5091979650505050505050565b60008582526001600160a01b03808616602084015280851660408401525060806060830152614bf26080830184614710565b9695505050505050565b60408101614c0984614f5e565b9281526020015290565b60608101614c2085614f5e565b938152602081019290925260409091015290565b6000614c3f85614f5e565b84825260606020830152614c5660608301856146af565b9050826040830152949350505050565b6000610120808301614c778c614f68565b8b84526020808501929092528a5190819052610140808501928281028601909101918c8201855b82811015614d1e578785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00186528151805186528481015185870152604080820151908701526060808201519087015260809081015160a091870182905290614d0a818801836146e4565b978601979650505090830190600101614c9e565b505050508381036040850152614d35818a8c61463c565b915050614d4560608401886147a6565b82810360e0840152614d58818688614684565b915050826101008301529998505050505050505050565b60208082526010908201527f496e636f72726563742073656e64657200000000000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b60208082526019908201527f696e76616c696420636861696e6564207265666572656e636500000000000000604082015260600190565b600060e08252855160e08301526020860151614e2f81614f68565b61010083015260408601516001600160a01b03908116610120840152606087015116610140830152608086015161016083015260a086015160c0610180840152614e7d6101a08401826146e4565b915050614e8d60208301866147a6565b60a082019390935260c0015292915050565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526001600160a01b03918216602084015216604082015260600190565b60405181810167ffffffffffffffff81118282101715614efd57600080fd5b604052919050565b600067ffffffffffffffff821115614f1b578081fd5b5060209081020190565b6000823561300481614f72565b60005b83811015614f4d578181015183820152602001614f35565b8381111561051c5750506000910152565b6004811061355257fe5b6002811061355257fe5b6001600160a01b038116811461355257600080fd5b801515811461355257600080fd5b6004811061355257600080fdfea2646970667358221220613cf1be8682d8c5febe4adc1dc31da069a8a2c03e12655d24d3e6090df85df164736f6c6343000701003360c060405234801561001057600080fd5b5060405161078738038061078783398101604081905261002f91610052565b60016000556001600160601b0319606092831b8116608052911b1660a0526100a3565b60008060408385031215610064578182fd5b825161006f8161008b565b60208401519092506100808161008b565b809150509250929050565b6001600160a01b03811681146100a057600080fd5b50565b60805160601c60a05160601c6106b36100d46000398060fc528061020f5250806058528061012052506106b36000f3fe6080604052600436106100385760003560e01c80637678922e146100885780638d928af8146100b3578063ac9650d8146100c857610083565b36610083576100813373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102066100e8565b005b600080fd5b34801561009457600080fd5b5061009d6100fa565b6040516100aa919061050e565b60405180910390f35b3480156100bf57600080fd5b5061009d61011e565b6100db6100d6366004610480565b610142565b6040516100aa919061052f565b816100f6576100f68161026e565b5050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061014c61029b565b8167ffffffffffffffff8111801561016357600080fd5b5060405190808252806020026020018201604052801561019757816020015b60608152602001906001900390816101825790505b50905060005b82811015610257576102388484838181106101b457fe5b90506020028101906101c691906105e3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016929150506102b4565b82828151811061024457fe5b602090810291909101015260010161019d565b50610260610337565b610268610348565b92915050565b610298817f42414c000000000000000000000000000000000000000000000000000000000061034f565b50565b6102ad600260005414156101906100e8565b6002600055565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516102df91906104ef565b600060405180830381855af49150503d806000811461031a576040519150601f19603f3d011682016040523d82523d6000602084013e61031f565b606091505b509150915061032e82826103ca565b95945050505050565b4780156102985761029833826103f4565b6001600055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156103d9575080610268565b8151156103e95781518083602001fd5b6102686101ae61026e565b610403814710156101a36100e8565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516104299061050b565b60006040518083038185875af1925050503d8060008114610466576040519150601f19603f3d011682016040523d82523d6000602084013e61046b565b606091505b5050905061047b816101a46100e8565b505050565b60008060208385031215610492578182fd5b823567ffffffffffffffff808211156104a9578384fd5b818501915085601f8301126104bc578384fd5b8135818111156104ca578485fd5b86602080830285010111156104dd578485fd5b60209290920196919550909350505050565b6000825161050181846020870161064d565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156105d6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610599818989018a850161064d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01695909501860194509285019290850190600101610554565b5092979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610617578283fd5b83018035915067ffffffffffffffff821115610631578283fd5b60200191503681900382131561064657600080fd5b9250929050565b60005b83811015610668578181015183820152602001610650565b83811115610677576000848401525b5050505056fea2646970667358221220063fdaaad6c7f32fb6dd53f100269a9ea16c7241c4a9587b1f83f82a35b5424264736f6c63430007010033","opcodes":"PUSH2 0x160 PUSH1 0x40 MSTORE PUSH32 0xAE1DC54057AF8E8E5CE068CDD4383149C7EFCB30E8FB95B592EE1594367FB509 PUSH1 0xE0 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x5ABC CODESIZE SUB DUP1 PUSH3 0x5ABC DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x59 SWAP2 PUSH3 0x20F JUMP JUMPDEST DUP3 DUP3 DUP3 DUP2 DUP2 DUP5 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAD5C4648 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xAE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 PUSH3 0xD4 SWAP2 SWAP1 PUSH3 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP1 DUP3 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 ADDRESS SWAP1 PUSH3 0x101 SWAP1 PUSH3 0x201 JUMP JUMPDEST PUSH3 0x10E SWAP3 SWAP2 SWAP1 PUSH3 0x288 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x12B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xC0 MSTORE SWAP3 SWAP1 SHL SWAP1 SWAP2 AND PUSH2 0x100 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x161 JUMPI PUSH1 0x0 PUSH3 0x1D8 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC1FE3E48 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x19D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x1B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 PUSH3 0x1D8 SWAP2 SWAP1 PUSH3 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH2 0x120 MSTORE SWAP2 SWAP1 SHL AND PUSH2 0x140 MSTORE POP PUSH3 0x2BB SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x787 DUP1 PUSH3 0x5335 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x224 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH3 0x231 DUP2 PUSH3 0x2A2 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x244 DUP2 PUSH3 0x2A2 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x257 DUP2 PUSH3 0x2A2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x274 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x281 DUP2 PUSH3 0x2A2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x4FD8 PUSH3 0x35D PUSH1 0x0 CODECOPY DUP1 PUSH2 0x56F MSTORE DUP1 PUSH2 0x603 MSTORE DUP1 PUSH2 0x669 MSTORE DUP1 PUSH2 0x9EF MSTORE DUP1 PUSH2 0xA9F MSTORE DUP1 PUSH2 0xB68 MSTORE DUP1 PUSH2 0x2A3B MSTORE DUP1 PUSH2 0x2A93 MSTORE POP DUP1 PUSH2 0x96D MSTORE DUP1 PUSH2 0x9C2 MSTORE DUP1 PUSH2 0xC30 MSTORE DUP1 PUSH2 0xD0F MSTORE DUP1 PUSH2 0x2B5C MSTORE POP DUP1 PUSH2 0xEA2 MSTORE DUP1 PUSH2 0x1BA3 MSTORE POP DUP1 PUSH2 0x3338 MSTORE POP DUP1 PUSH2 0x1A4D MSTORE POP DUP1 PUSH2 0x1B4D MSTORE DUP1 PUSH2 0x1C9A MSTORE POP POP PUSH2 0x4FD8 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80DB15BD GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xC518E531 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE8210E3C GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE8210E3C EQ PUSH2 0x421 JUMPI DUP1 PUSH4 0xECC02637 EQ PUSH2 0x434 JUMPI DUP1 PUSH4 0xEFE69108 EQ PUSH2 0x447 JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0x45A JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0xC518E531 EQ PUSH2 0x3C8 JUMPI DUP1 PUSH4 0xD293F290 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0xD80952D5 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0xDB4C0E91 EQ PUSH2 0x40E JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x8FE4624F GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x8FE4624F EQ PUSH2 0x36F JUMPI DUP1 PUSH4 0x959FC17A EQ PUSH2 0x382 JUMPI DUP1 PUSH4 0xABF6D399 EQ PUSH2 0x395 JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0x3A8 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x321 JUMPI DUP1 PUSH4 0x8C57198B EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x8D64CFBC EQ PUSH2 0x347 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x35A JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x6D307EA8 GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x6D307EA8 EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0x7AB6E03C EQ PUSH2 0x2D0 JUMPI DUP1 PUSH4 0x7BC008F5 EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0x2F6 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 EQ PUSH2 0x264 JUMPI DUP1 PUSH4 0x5967B696 EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x611B90DD EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0x65CA4804 EQ PUSH2 0x2AA JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x1C982441 GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x1C982441 EQ PUSH2 0x218 JUMPI DUP1 PUSH4 0x2CBEC84E EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0x2E6272EA EQ PUSH2 0x23E JUMPI DUP1 PUSH4 0x3F85D390 EQ PUSH2 0x251 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0xE248FEA EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x1089E5E3 EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0x18369446 EQ PUSH2 0x205 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F0 PUSH2 0x1EB CALLDATASIZE PUSH1 0x4 PUSH2 0x3D90 JUMP JUMPDEST PUSH2 0x487 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F0 PUSH2 0x200 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D12 JUMP JUMPDEST PUSH2 0x522 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x213 CALLDATASIZE PUSH1 0x4 PUSH2 0x43D1 JUMP JUMPDEST PUSH2 0x70C JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x226 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C40 JUMP JUMPDEST PUSH2 0x915 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x239 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D12 JUMP JUMPDEST PUSH2 0xC12 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x24C CALLDATASIZE PUSH1 0x4 PUSH2 0x44CD JUMP JUMPDEST PUSH2 0xD46 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x25F CALLDATASIZE PUSH1 0x4 PUSH2 0x3D46 JUMP JUMPDEST PUSH2 0xE6F JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x272 CALLDATASIZE PUSH1 0x4 PUSH2 0x428B JUMP JUMPDEST PUSH2 0xF38 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F0 PUSH2 0x292 CALLDATASIZE PUSH1 0x4 PUSH2 0x45BB JUMP JUMPDEST PUSH2 0x11E7 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x41E1 JUMP JUMPDEST PUSH2 0x1229 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x423B JUMP JUMPDEST PUSH2 0x1344 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2CB CALLDATASIZE PUSH1 0x4 PUSH2 0x41E1 JUMP JUMPDEST PUSH2 0x1537 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2DE CALLDATASIZE PUSH1 0x4 PUSH2 0x428B JUMP JUMPDEST PUSH2 0x1759 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x423B JUMP JUMPDEST PUSH2 0x185F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x1A4B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x318 SWAP2 SWAP1 PUSH2 0x4854 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH2 0x32F CALLDATASIZE PUSH1 0x4 PUSH2 0x3C85 JUMP JUMPDEST PUSH2 0x1A6F JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x342 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F2D JUMP JUMPDEST PUSH2 0x1B73 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x355 CALLDATASIZE PUSH1 0x4 PUSH2 0x4148 JUMP JUMPDEST PUSH2 0x1C1E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x1C98 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x37D CALLDATASIZE PUSH1 0x4 PUSH2 0x4038 JUMP JUMPDEST PUSH2 0x1CBC JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x390 CALLDATASIZE PUSH1 0x4 PUSH2 0x40C7 JUMP JUMPDEST PUSH2 0x1EE6 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x3A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x41E1 JUMP JUMPDEST PUSH2 0x1F63 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F0 PUSH2 0x3C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x41B6 JUMP JUMPDEST PUSH2 0x2119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F0 PUSH2 0x3E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x45EB JUMP JUMPDEST PUSH2 0x21BF JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x3F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x41E1 JUMP JUMPDEST PUSH2 0x21CD JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x409 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F90 JUMP JUMPDEST PUSH2 0x2455 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x41C CALLDATASIZE PUSH1 0x4 PUSH2 0x3C40 JUMP JUMPDEST PUSH2 0x29E3 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x42F CALLDATASIZE PUSH1 0x4 PUSH2 0x41E1 JUMP JUMPDEST PUSH2 0x2B93 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x442 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E60 JUMP JUMPDEST PUSH2 0x2E58 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x455 CALLDATASIZE PUSH1 0x4 PUSH2 0x41E1 JUMP JUMPDEST PUSH2 0x2F50 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x466 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47A PUSH2 0x475 CALLDATASIZE PUSH1 0x4 PUSH2 0x45BB JUMP JUMPDEST PUSH2 0x2FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x318 SWAP2 SWAP1 PUSH2 0x4E9F JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x51C JUMPI DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0x49F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4B4 SWAP2 SWAP1 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x84E9BD7E CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4DF SWAP2 SWAP1 PUSH2 0x4854 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x50D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x48B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x52B DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x53C JUMPI PUSH2 0x539 DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB0E3890000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xB0E38900 SWAP1 PUSH2 0x5A4 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x5F4 SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH2 0x629 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP5 PUSH2 0x3081 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x6F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x6A0 SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x6F2 SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP JUMPDEST PUSH2 0x6FD DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x51C JUMPI PUSH2 0x51C DUP3 DUP3 PUSH2 0x30FB JUMP JUMPDEST CALLER PUSH2 0x71A PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x743 JUMPI POP ADDRESS PUSH2 0x738 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x768 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0x7CD JUMPI PUSH1 0x0 DUP12 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x782 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD SWAP1 POP PUSH2 0x799 DUP2 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x7C4 JUMPI PUSH2 0x7A7 DUP2 PUSH2 0x3056 JUMP JUMPDEST DUP13 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x7B3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x76B JUMP JUMPDEST POP PUSH1 0x60 PUSH2 0x7D8 PUSH2 0x1C98 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x945BCEC9 DUP6 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x812 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C66 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x82B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x83F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x868 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3DD0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x906 JUMPI PUSH2 0x893 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x884 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x300B JUMP JUMPDEST PUSH2 0x8AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4DDD JUMP JUMPDEST PUSH2 0x8FE DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x8BE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8F9 DUP5 DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x8D8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x8EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x310E JUMP JUMPDEST PUSH2 0x30FB JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x86D JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x91E DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x92F JUMPI PUSH2 0x92C DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x992 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x967 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x992 DUP5 PUSH32 0x0 DUP5 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0xA19 SWAP1 PUSH32 0x0 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xA6B SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0xEA598CB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xEA598CB0 SWAP1 PUSH2 0xAD4 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB02 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xB26 SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0xBF3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0xB9F SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBCD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xBF1 SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP JUMPDEST PUSH2 0xBFC DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0xC0B JUMPI PUSH2 0xC0B DUP3 DUP3 PUSH2 0x30FB JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xC1B DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0xC2C JUMPI PUSH2 0xC29 DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA1903EAB DUP5 ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP2 SWAP1 PUSH2 0x4854 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCA8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP 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 0xCCD SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x6F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x6A0 SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST CALLER PUSH2 0xD54 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xD7D JUMPI POP ADDRESS PUSH2 0xD72 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xD99 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0xDA6 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0xDBE JUMPI PUSH2 0xDB8 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x3056 JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0xDC8 PUSH2 0x1C98 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52BBBE29 DUP5 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDFA SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4E14 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE27 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP 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 0xE4C SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH2 0xE57 DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0xE66 JUMPI PUSH2 0xE66 DUP3 DUP3 PUSH2 0x30FB JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x3B9F738400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x3B9F7384 SWAP1 PUSH2 0xEDB SWAP1 DUP8 SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x4A1C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF09 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xF2D SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH2 0x6FD DUP3 PUSH2 0x300B JUMP JUMPDEST PUSH2 0xF41 DUP4 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0xF52 JUMPI PUSH2 0xF4F DUP4 PUSH2 0x3056 JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xFD1 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x51C0E061 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFA8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xFCC SWAP2 SWAP1 PUSH2 0x3C24 JUMP JUMPDEST PUSH2 0x1044 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4800D97F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x100C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1020 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1044 SWAP2 SWAP1 PUSH2 0x3C24 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ADDRESS EQ PUSH2 0x1089 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND CALLER EQ PUSH2 0x107E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x1089 DUP7 DUP3 DUP7 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x10D0 SWAP1 DUP11 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1122 SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x2F2CAB8700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x2F2CAB87 SWAP1 PUSH2 0x1171 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP7 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x49F0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x118B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x119F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x11C3 SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH2 0x11CE DUP4 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x11DD JUMPI PUSH2 0x11DD DUP4 DUP3 PUSH2 0x30FB JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0xC78533B5D3AFF901CB655B9491C67366EDABC3CD9CB680C3934F61D7EB078752 PUSH2 0x1211 DUP3 PUSH2 0x3056 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x121E SWAP2 SWAP1 PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x1232 DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x1243 JUMPI PUSH2 0x1240 DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x1286 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x127B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x1286 DUP5 DUP7 DUP5 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEA785A5E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xEA785A5E SWAP1 PUSH2 0x12D0 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1322 SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH2 0x132D DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x133C JUMPI PUSH2 0x133C DUP3 DUP3 PUSH2 0x30FB JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x134D DUP2 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x135E JUMPI PUSH2 0x135B DUP2 PUSH2 0x3056 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ PUSH2 0x13A1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER EQ PUSH2 0x1396 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x13A1 DUP4 DUP6 DUP4 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x13E6 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1414 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ PUSH2 0x51C JUMPI PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1477 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x149B SWAP2 SWAP1 PUSH2 0x3C24 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x14E5 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1513 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x133C SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST PUSH2 0x1540 DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x1551 JUMPI PUSH2 0x154E DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x158C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x15C4 SWAP2 SWAP1 PUSH2 0x3C24 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x1609 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x15FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x1609 DUP6 DUP3 DUP6 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x1650 SWAP1 DUP10 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x166A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x167E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x16A2 SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x16ED SWAP1 DUP8 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4EA8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1707 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x171B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x173F SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH2 0x174A DUP4 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0xE66 JUMPI PUSH2 0xE66 DUP4 DUP3 PUSH2 0x30FB JUMP JUMPDEST PUSH2 0x1762 DUP4 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x1773 JUMPI PUSH2 0x1770 DUP4 PUSH2 0x3056 JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x17B6 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x17AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x17B6 DUP6 DUP8 DUP6 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEAD5D35900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xEAD5D359 SWAP1 PUSH2 0x1802 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x49CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x181B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x182F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1853 SWAP2 SWAP1 PUSH2 0x460C JUMP JUMPDEST SWAP2 POP POP PUSH2 0xE57 DUP3 PUSH2 0x300B JUMP JUMPDEST PUSH2 0x1868 DUP2 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x1879 JUMPI PUSH2 0x1876 DUP2 PUSH2 0x3056 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x18EC SWAP2 SWAP1 PUSH2 0x3C24 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x1931 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x1926 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x1931 DUP5 DUP3 DUP5 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x1978 SWAP1 DUP9 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1992 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x19CA SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x1A12 SWAP1 DUP6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4EA8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A40 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ DUP1 PUSH2 0x1A84 JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x1AA0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4DA6 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1ABF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4868 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x1B2E SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x4821 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x133C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP3 PUSH2 0x31C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC654279400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xC6542794 SWAP1 PUSH2 0x1BE4 SWAP1 ADDRESS SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x4970 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C12 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD505ACCF DUP8 PUSH2 0x1C36 PUSH2 0x1C98 JUMP JUMPDEST DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C5D SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x492F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x1CDB JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x1CF7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D02 DUP9 PUSH2 0x323C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1D0F DUP4 PUSH2 0x300B JUMP JUMPDEST PUSH2 0x1D1A JUMPI PUSH1 0x0 PUSH2 0x1DAF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1D5F SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4854 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1DAF SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DBF DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x3242 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x1DCC PUSH2 0x1C98 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB95CAC28 DUP6 DUP12 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DFE SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BC0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E2B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x1E39 DUP4 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x1A40 JUMPI PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1E86 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x4854 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EB2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1ED6 SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH2 0x1C12 DUP5 PUSH2 0x8F9 DUP4 DUP6 PUSH2 0x3270 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8FCBAF0C DUP9 PUSH2 0x1EFE PUSH2 0x1C98 JUMP JUMPDEST DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F27 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x48E6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F55 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1F6C DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x1F7D JUMPI PUSH2 0x1F7A DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FCC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1FF0 SWAP2 SWAP1 PUSH2 0x3C24 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x2035 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x202A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x2035 DUP6 DUP3 DUP6 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x207C SWAP1 DUP10 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2096 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x20CE SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x2F4F21E200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x2F4F21E2 SWAP1 PUSH2 0x16ED SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH2 0x2122 DUP2 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x2133 JUMPI PUSH2 0x2130 DUP2 PUSH2 0x3056 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95EA7B3 PUSH2 0x214A PUSH2 0x1C98 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2168 SWAP3 SWAP2 SWAP1 PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2196 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x21BA SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x21C9 DUP3 DUP3 PUSH2 0x30FB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x21D6 DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x21E7 JUMPI PUSH2 0x21E4 DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x222A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x221F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x222A DUP5 DUP7 DUP5 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2279 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x229D SWAP2 SWAP1 PUSH2 0x3C24 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x22E5 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2313 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x235F SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4854 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x238B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x23AF SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x23F9 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2427 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x244B SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP PUSH2 0x174A DUP4 PUSH2 0x300B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x2474 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x2490 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x24A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x24D3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x24EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2519 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2689 JUMPI PUSH2 0x2536 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x884 JUMPI INVALID JUMPDEST PUSH2 0x2552 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4DDD JUMP JUMPDEST DUP6 MLOAD PUSH1 0x0 SWAP1 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x2563 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x2577 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP7 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x25C5 JUMPI PUSH2 0x2594 DUP2 PUSH2 0x3286 JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x25A0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x2680 JUMP JUMPDEST PUSH2 0x25CE DUP2 PUSH2 0x3289 JUMP JUMPDEST PUSH2 0x265B JUMPI PUSH2 0x25DB DUP2 PUSH2 0x3286 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2606 SWAP2 SWAP1 PUSH2 0x4854 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x261E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2632 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2656 SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST PUSH2 0x2667 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2673 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x251F JUMP JUMPDEST POP DUP5 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x2720 JUMPI PUSH2 0x269C PUSH2 0x1C98 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP8 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x26C9 SWAP3 SWAP2 SWAP1 PUSH2 0x488C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x271D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3ED6 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x272E DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x3296 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x273B PUSH2 0x1C98 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8BDB3913 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x276C SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BC0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2786 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x279A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x60 SWAP3 POP DUP6 SWAP2 POP POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x27B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x27E3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP6 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x2880 JUMPI PUSH2 0x27F8 PUSH2 0x1C98 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP9 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2825 SWAP3 SWAP2 SWAP1 PUSH2 0x488C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x283D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2851 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2879 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3ED6 JUMP JUMPDEST SWAP1 POP PUSH2 0x297E JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x297C JUMPI DUP7 MLOAD PUSH1 0x0 SWAP1 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x289C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x28B0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x28C3 DUP2 PUSH2 0x3289 JUMP JUMPDEST PUSH2 0x2950 JUMPI PUSH2 0x28D0 DUP2 PUSH2 0x3286 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x28FB SWAP2 SWAP1 PUSH2 0x4854 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2913 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2927 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x294B SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST PUSH2 0x295C JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2968 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x2883 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1C8B JUMPI PUSH2 0x29DB DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x2998 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8F9 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x29B1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x29C5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3270 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2981 JUMP JUMPDEST PUSH2 0x29EC DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x29FD JUMPI PUSH2 0x29FA DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x2A60 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x2A35 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x2A60 DUP5 PUSH32 0x0 DUP5 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDE0E9A3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xDE0E9A3E SWAP1 PUSH2 0x2AC8 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2AF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2B1A SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0xBF3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0xB9F SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH2 0x2B9C DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x2BAD JUMPI PUSH2 0x2BAA DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2C20 SWAP2 SWAP1 PUSH2 0x3C24 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x2C65 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x2C5A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x2C65 DUP6 DUP3 DUP6 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x2CAC SWAP1 DUP10 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CDA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2CFE SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0xB6B55F2500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xB6B55F25 SWAP1 PUSH2 0x2D44 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D72 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x2DBE SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4854 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DEA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2E0E SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x23F9 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2EEC JUMPI CALLER DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x2E70 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xA0 MUL ADD PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2E88 SWAP2 SWAP1 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2EC8 JUMPI POP ADDRESS DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x2EA5 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xA0 MUL ADD PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2EBD SWAP2 SWAP1 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x2EE4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2E5B JUMP JUMPDEST POP PUSH2 0x2EF5 PUSH2 0x1C98 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F23 SWAP3 SWAP2 SWAP1 PUSH2 0x4A7C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2F59 DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x2F6A JUMPI PUSH2 0x2F67 DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x2FAD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x2FA2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x2FAD DUP5 DUP7 DUP5 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBA08765200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xBA087652 SWAP1 PUSH2 0x12D0 SWAP1 DUP7 SWAP1 DUP9 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4EBF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3004 DUP3 PUSH2 0x32BD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 DUP3 AND EQ JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3064 DUP5 PUSH2 0x32BD JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3071 DUP5 PUSH2 0x32D4 JUMP JUMPDEST ISZERO PUSH2 0x3004 JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3090 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x331B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x30A9 SWAP1 PUSH2 0x3286 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x30E6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x30EB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x21BA DUP2 PUSH2 0x1A4 PUSH2 0x331B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3106 DUP4 PUSH2 0x3329 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SGT PUSH2 0x3120 JUMPI DUP2 PUSH1 0x0 SUB PUSH2 0x3122 JUMP JUMPDEST DUP2 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH2 0x3132 JUMPI PUSH2 0x21BA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3162 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x31AD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0xC0B DUP6 DUP4 DUP4 PUSH2 0x3387 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x31E2 SWAP2 SWAP1 PUSH2 0x4805 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x321F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3224 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3233 DUP3 DUP3 PUSH2 0x34C1 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 DUP1 ISZERO PUSH2 0x324F JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3265 JUMPI PUSH2 0x325E DUP3 PUSH2 0x34EB JUMP JUMPDEST SWAP1 POP PUSH2 0x3122 JUMP JUMPDEST PUSH2 0x3122 PUSH2 0x136 PUSH2 0x3528 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3280 DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x331B JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 DUP1 ISZERO PUSH2 0x32A3 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x32B2 JUMPI PUSH2 0x325E DUP3 PUSH2 0x3555 JUMP JUMPDEST PUSH2 0x3122 PUSH2 0x150 PUSH2 0x3528 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x32C9 DUP4 PUSH2 0x3329 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x21C9 JUMPI PUSH2 0x21C9 DUP2 PUSH2 0x3528 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x3336 DUP4 PUSH2 0x359E JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3368 SWAP3 SWAP2 SWAP1 PUSH2 0x4846 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x33A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x33DB JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x33C8 PUSH2 0x37EC JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x33C0 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x3473 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3409 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x342B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3460 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x33E1 JUMP JUMPDEST POP PUSH2 0x347C PUSH2 0x1C98 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x34A7 SWAP2 SWAP1 PUSH2 0x4B2A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x34D0 JUMPI POP DUP1 PUSH2 0x3122 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x34E0 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x3122 PUSH2 0x1AE PUSH2 0x3528 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x34F8 DUP4 PUSH2 0x35C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3508 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x351F JUMPI PUSH2 0x3517 DUP4 PUSH2 0x35D7 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3051 JUMP JUMPDEST DUP3 SWAP2 POP POP PUSH2 0x3051 JUMP JUMPDEST PUSH2 0x3552 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x3685 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x3562 DUP4 PUSH2 0x35C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3572 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3581 JUMPI PUSH2 0x3517 DUP4 PUSH2 0x36E6 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x358F JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x351F JUMPI PUSH2 0x3517 DUP4 PUSH2 0x3749 JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3122 SWAP2 SWAP1 PUSH2 0x42FA JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x35E5 DUP5 PUSH2 0x379C JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x364B JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3604 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3617 DUP2 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x3642 JUMPI PUSH2 0x3625 DUP2 PUSH2 0x3056 JUMP JUMPDEST DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3631 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 SWAP3 POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x35ED JUMP JUMPDEST POP DUP1 PUSH2 0x3657 JUMPI DUP5 PUSH2 0x3233 JUMP JUMPDEST PUSH1 0x1 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x366D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C34 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x36F4 DUP5 PUSH2 0x37BF JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3701 DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x373F JUMPI PUSH2 0x370F DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3727 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C13 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x3051 JUMP JUMPDEST DUP4 SWAP3 POP POP POP PUSH2 0x3051 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x3756 DUP4 PUSH2 0x37D6 JUMP JUMPDEST SWAP1 POP PUSH2 0x3761 DUP2 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x351F JUMPI PUSH2 0x376F DUP2 PUSH2 0x3056 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3785 SWAP3 SWAP2 SWAP1 PUSH2 0x4BFC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x3051 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x37B4 SWAP2 SWAP1 PUSH2 0x4379 JUMP JUMPDEST SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x37B4 SWAP2 SWAP1 PUSH2 0x4343 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3004 SWAP2 SWAP1 PUSH2 0x4316 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3122 DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3838 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x384F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x3869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3880 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3893 PUSH2 0x388E DUP3 PUSH2 0x4F05 JUMP JUMPDEST PUSH2 0x4EDE JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x38B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x38DC JUMPI DUP2 CALLDATALOAD PUSH2 0x38CA DUP2 PUSH2 0x4F72 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x38B7 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x38F7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3905 PUSH2 0x388E DUP3 PUSH2 0x4F05 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x38DC JUMPI DUP2 CALLDATALOAD DUP8 ADD PUSH1 0xA0 DUP1 PUSH1 0x1F NOT DUP4 DUP13 SUB ADD SLT ISZERO PUSH2 0x3937 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3940 DUP2 PUSH2 0x4EDE JUMP JUMPDEST DUP6 DUP4 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 ADD CALLDATALOAD DUP8 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP6 ADD CALLDATALOAD DUP3 DUP5 ADD MSTORE PUSH1 0x80 SWAP2 POP DUP2 DUP6 ADD CALLDATALOAD DUP2 DUP5 ADD MSTORE POP DUP3 DUP5 ADD CALLDATALOAD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x3982 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3990 DUP13 DUP9 DUP6 DUP8 ADD ADD PUSH2 0x3AB2 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP7 MSTORE POP POP SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3916 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x39B9 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x39D0 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0x40 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x3869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x39FB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3A09 PUSH2 0x388E DUP3 PUSH2 0x4F05 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x3A2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x38DC JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3A2D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3A59 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3A67 PUSH2 0x388E DUP3 PUSH2 0x4F05 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x3A88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x38DC JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3A8B JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3122 DUP2 PUSH2 0x4F87 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3AC2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3AD8 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3AEB PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x4EDE JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3B02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 DUP2 LT PUSH2 0x3122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x3122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3B4A JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x3B54 PUSH1 0x80 PUSH2 0x4EDE JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3B6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3B7A DUP6 DUP4 DUP7 ADD PUSH2 0x3870 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3B90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3B9C DUP6 DUP4 DUP7 ADD PUSH2 0x39EB JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3BB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BC2 DUP5 DUP3 DUP6 ADD PUSH2 0x3AB2 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0x3BD5 DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0x3AA7 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3BF1 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C19 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3004 DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C35 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3004 DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3C55 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3C60 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3C70 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3C9A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3CA5 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3CB5 DUP2 PUSH2 0x4F87 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3CD1 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3CE4 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3CF2 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3D03 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3D26 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3D31 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3D5A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3D70 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3D7C DUP7 DUP3 DUP8 ADD PUSH2 0x3827 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP PUSH1 0x20 SWAP6 SWAP1 SWAP6 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DA2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3DB8 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3DC4 DUP6 DUP3 DUP7 ADD PUSH2 0x3827 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DE2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3DF8 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x3E08 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x3E16 PUSH2 0x388E DUP3 PUSH2 0x4F05 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x3E32 JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x3E54 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x3E36 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3E74 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3E8B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E9E JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3EAC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP8 PUSH1 0x20 PUSH1 0xA0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x3EC0 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP9 SWAP1 SWAP8 POP SWAP6 SWAP1 SWAP2 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EE7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3EFD JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3F09 DUP5 DUP3 DUP6 ADD PUSH2 0x3A49 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F22 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3004 DUP2 PUSH2 0x4F87 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3F45 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3F50 DUP2 PUSH2 0x4F87 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x3F60 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x3F76 DUP9 PUSH1 0x60 DUP10 ADD PUSH2 0x3BF7 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3FAA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH2 0x3FBB DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0x3B1B JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x3FCB DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x3FDB DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3FF7 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x4003 DUP12 DUP4 DUP13 ADD PUSH2 0x3B39 JUMP JUMPDEST SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4018 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x4025 DUP11 DUP3 DUP12 ADD PUSH2 0x39A8 JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4052 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH2 0x4063 DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0x3B1B JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x4073 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x4083 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x409E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x40AA DUP11 DUP3 DUP12 ADD PUSH2 0x3B39 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x40E3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x40EE DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x40FE DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH2 0x411C DUP2 PUSH2 0x4F87 JUMP JUMPDEST SWAP4 POP PUSH2 0x412B DUP11 PUSH1 0xA0 DUP12 ADD PUSH2 0x3BF7 JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4162 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x416D DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x417D DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0x419A DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0x3BF7 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41C8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x41D3 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x41F8 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4203 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x4213 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x4223 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4250 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x425B DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x426B DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x427B DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x42A3 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x42AE DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x42BE DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x42CE DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x42E5 DUP2 PUSH2 0x4F87 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x430B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3004 DUP2 PUSH2 0x4F95 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4328 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4333 DUP2 PUSH2 0x4F95 JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4357 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x4362 DUP2 PUSH2 0x4F95 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD SWAP1 SWAP7 SWAP5 SWAP6 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x438D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x4398 DUP2 PUSH2 0x4F95 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x43B4 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x43C0 DUP7 DUP3 DUP8 ADD PUSH2 0x3A49 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x43F2 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x43FC DUP14 DUP14 PUSH2 0x3B2A JUMP JUMPDEST SWAP11 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 PUSH1 0x20 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x4417 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4427 DUP15 PUSH1 0x20 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x38E7 JUMP JUMPDEST SWAP11 POP DUP1 PUSH1 0x40 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x4439 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4449 DUP15 PUSH1 0x40 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x3827 JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH2 0x445B DUP15 PUSH1 0x60 DUP16 ADD PUSH2 0x3BE0 JUMP JUMPDEST SWAP8 POP DUP1 PUSH1 0xE0 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x446D JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x447D DUP15 PUSH1 0xE0 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x3827 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP5 POP PUSH2 0x120 DUP14 ADD CALLDATALOAD SWAP4 POP PUSH2 0x140 DUP14 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x44A3 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x44B5 DUP14 PUSH2 0x140 DUP15 ADD CALLDATALOAD DUP15 ADD PUSH2 0x39A8 JUMP JUMPDEST DUP2 SWAP4 POP DUP1 SWAP3 POP POP POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x44E6 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x44FD JUMPI DUP6 DUP7 REVERT JUMPDEST SWAP1 DUP9 ADD SWAP1 PUSH1 0xC0 DUP3 DUP12 SUB SLT ISZERO PUSH2 0x4510 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x451A PUSH1 0xC0 PUSH2 0x4EDE JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH2 0x452B DUP12 PUSH1 0x20 DUP6 ADD PUSH2 0x3B2A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x453E DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x4550 DUP12 PUSH1 0x60 DUP6 ADD PUSH2 0x381C JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x4570 JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH2 0x457C DUP13 DUP3 DUP7 ADD PUSH2 0x3AB2 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP DUP1 SWAP9 POP POP POP POP PUSH2 0x4595 DUP9 PUSH1 0x20 DUP10 ADD PUSH2 0x3BE0 JUMP JUMPDEST SWAP6 SWAP9 SWAP6 SWAP8 POP POP POP POP PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP4 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP4 PUSH1 0xE0 DUP3 ADD CALLDATALOAD SWAP4 POP PUSH2 0x100 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45CC JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45E4 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x45FD JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x461E JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x4679 JUMPI DUP2 CALLDATALOAD PUSH2 0x465E DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x464B JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x4679 JUMPI DUP2 CALLDATALOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4693 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4679 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x46C2 JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x46FC DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4F32 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0xA0 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4755 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4730 JUMP JUMPDEST POP POP DUP3 DUP6 ADD MLOAD SWAP2 POP DUP6 DUP2 SUB DUP4 DUP8 ADD MSTORE PUSH2 0x476E DUP2 DUP4 PUSH2 0x46AF JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x4789 DUP3 DUP3 PUSH2 0x46E4 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x479E PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x46DE JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x47B1 DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x47CD DUP3 PUSH2 0x4F87 JUMP JUMPDEST SWAP1 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x47E4 DUP3 PUSH2 0x4F72 JUMP JUMPDEST AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD CALLDATALOAD PUSH2 0x47F8 DUP2 PUSH2 0x4F87 JUMP JUMPDEST DUP1 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4817 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x4F32 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x4833 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x4F32 JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND DUP5 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP7 ADD MSTORE DUP3 DUP7 MLOAD DUP1 DUP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP2 POP DUP3 DUP9 ADD SWAP5 POP DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x48D8 JUMPI DUP6 MLOAD DUP6 AND DUP4 MSTORE SWAP5 DUP4 ADD SWAP5 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x48BA JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE SWAP7 SWAP1 SWAP8 AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE ISZERO ISZERO PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 ISZERO ISZERO PUSH1 0x20 DUP8 ADD MSTORE SWAP4 SWAP1 SWAP6 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 DUP5 PUSH1 0x60 DUP4 ADD DUP3 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x4A5F JUMPI PUSH1 0x20 DUP4 CALLDATALOAD PUSH2 0x4A44 DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4A2F JUMP JUMPDEST POP DUP1 SWAP3 POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x40 DUP1 DUP5 ADD DUP7 DUP5 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x4B1D JUMPI DUP2 CALLDATALOAD PUSH2 0x4AA5 DUP2 PUSH2 0x4F95 JUMP JUMPDEST PUSH2 0x4AAE DUP2 PUSH2 0x4F5E JUMP JUMPDEST DUP4 MSTORE DUP2 DUP6 ADD CALLDATALOAD PUSH2 0x4ABD DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP7 ADD MSTORE DUP2 DUP5 ADD CALLDATALOAD DUP5 DUP5 ADD MSTORE PUSH1 0x60 PUSH2 0x4AE0 DUP2 DUP5 ADD DUP5 PUSH2 0x4F25 JUMP JUMPDEST PUSH2 0x4AEC DUP3 DUP7 ADD DUP3 PUSH2 0x462F JUMP JUMPDEST POP POP PUSH1 0x80 PUSH2 0x4AFC DUP2 DUP5 ADD DUP5 PUSH2 0x4F25 JUMP JUMPDEST PUSH2 0x4B08 DUP3 DUP7 ADD DUP3 PUSH2 0x462F JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4A92 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4BB3 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH2 0x4B5C DUP2 PUSH2 0x4F5E JUMP JUMPDEST DUP6 MSTORE DUP1 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP7 ADD MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP7 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD PUSH2 0x4B89 DUP3 DUP9 ADD DUP3 PUSH2 0x462F JUMP JUMPDEST POP POP PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 PUSH2 0x4B9E DUP7 DUP3 ADD DUP4 PUSH2 0x462F JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP4 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4B47 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x4BF2 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4710 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4C09 DUP5 PUSH2 0x4F5E JUMP JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4C20 DUP6 PUSH2 0x4F5E JUMP JUMPDEST SWAP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C3F DUP6 PUSH2 0x4F5E JUMP JUMPDEST DUP5 DUP3 MSTORE PUSH1 0x60 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4C56 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x46AF JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP1 DUP4 ADD PUSH2 0x4C77 DUP13 PUSH2 0x4F68 JUMP JUMPDEST DUP12 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD SWAP1 DUP2 SWAP1 MSTORE PUSH2 0x140 DUP1 DUP6 ADD SWAP3 DUP3 DUP2 MUL DUP7 ADD SWAP1 SWAP2 ADD SWAP2 DUP13 DUP3 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4D1E JUMPI DUP8 DUP6 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC0 ADD DUP7 MSTORE DUP2 MLOAD DUP1 MLOAD DUP7 MSTORE DUP5 DUP2 ADD MLOAD DUP6 DUP8 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD PUSH1 0xA0 SWAP2 DUP8 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x4D0A DUP2 DUP9 ADD DUP4 PUSH2 0x46E4 JUMP JUMPDEST SWAP8 DUP7 ADD SWAP8 SWAP7 POP POP POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4C9E JUMP JUMPDEST POP POP POP POP DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x4D35 DUP2 DUP11 DUP13 PUSH2 0x463C JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4D45 PUSH1 0x60 DUP5 ADD DUP9 PUSH2 0x47A6 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x4D58 DUP2 DUP7 DUP9 PUSH2 0x4684 JUMP JUMPDEST SWAP2 POP POP DUP3 PUSH2 0x100 DUP4 ADD MSTORE SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742073656E64657200000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x696E76616C696420636861696E6564207265666572656E636500000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 MSTORE DUP6 MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x4E2F DUP2 PUSH2 0x4F68 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x60 DUP8 ADD MLOAD AND PUSH2 0x140 DUP4 ADD MSTORE PUSH1 0x80 DUP7 ADD MLOAD PUSH2 0x160 DUP4 ADD MSTORE PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 PUSH2 0x180 DUP5 ADD MSTORE PUSH2 0x4E7D PUSH2 0x1A0 DUP5 ADD DUP3 PUSH2 0x46E4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4E8D PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x47A6 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4EFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4F1B JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x3004 DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4F4D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4F35 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x51C JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x3552 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x3552 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x3552 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH2 0x3CF1 0xBE DUP7 DUP3 0xD8 0xC5 INVALID 0xBE 0x4A 0xDC SAR 0xC3 SAR LOG0 PUSH10 0xA8A2C03E12655D24D3E6 MULMOD 0xD 0xF8 0x5D CALL PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x787 CODESIZE SUB DUP1 PUSH2 0x787 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH2 0xA3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x64 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x6F DUP2 PUSH2 0x8B JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x80 DUP2 PUSH2 0x8B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x6B3 PUSH2 0xD4 PUSH1 0x0 CODECOPY DUP1 PUSH1 0xFC MSTORE DUP1 PUSH2 0x20F MSTORE POP DUP1 PUSH1 0x58 MSTORE DUP1 PUSH2 0x120 MSTORE POP PUSH2 0x6B3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7678922E EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xC8 JUMPI PUSH2 0x83 JUMP JUMPDEST CALLDATASIZE PUSH2 0x83 JUMPI PUSH2 0x81 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x206 PUSH2 0xE8 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0xFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0x11E JUMP JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x480 JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x52F JUMP JUMPDEST DUP2 PUSH2 0xF6 JUMPI PUSH2 0xF6 DUP2 PUSH2 0x26E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x14C PUSH2 0x29B JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x197 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x182 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x257 JUMPI PUSH2 0x238 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1B4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x5E3 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 SWAP2 POP POP PUSH2 0x2B4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x244 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x19D JUMP JUMPDEST POP PUSH2 0x260 PUSH2 0x337 JUMP JUMPDEST PUSH2 0x268 PUSH2 0x348 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x298 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x34F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x2AD PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x31A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x31F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x32E DUP3 DUP3 PUSH2 0x3CA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH2 0x298 CALLER DUP3 PUSH2 0x3F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x3D9 JUMPI POP DUP1 PUSH2 0x268 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x3E9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x268 PUSH2 0x1AE PUSH2 0x26E JUMP JUMPDEST PUSH2 0x403 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x429 SWAP1 PUSH2 0x50B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x46B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x47B DUP2 PUSH2 0x1A4 PUSH2 0xE8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x492 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4BC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x4CA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x4DD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x501 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x64D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5D6 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP8 MSTORE PUSH2 0x599 DUP2 DUP10 DUP10 ADD DUP11 DUP6 ADD PUSH2 0x64D JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP6 SWAP1 SWAP6 ADD DUP7 ADD SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x554 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x617 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x631 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x668 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x650 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MOD EXTCODEHASH 0xDA 0xAA 0xD6 0xC7 RETURN 0x2F 0xB6 0xDD MSTORE8 CALL STOP 0x26 SWAP11 SWAP15 LOG1 PUSH13 0x7241C4A9587B1F83F82A35B542 TIMESTAMP PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"828:525:80:-:0;;;7706:42:69;7657:91;;943:140:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1058:5;1065:6;1073;1657::64;1678;1637:5;2010::69;-1:-1:-1;;;;;2010:10:69;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1450:12:60;;;;;;;;2034:14:69;;;;;::::1;::::0;2072:41:::1;::::0;2043:5;;2107:4:::1;::::0;2072:41:::1;::::0;::::1;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;;;;2058:55:69::1;::::0;;;;;::::1;::::0;1585:32:71;;;;;;;;-1:-1:-1;;;;;;1728:19:73;;:66;;1792:1;1728:66;;;1766:6;-1:-1:-1;;;;;1750:30:73;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1719:75:73;;;;;;;;1804:34;;;;;;-1:-1:-1;828:525:80;;-1:-1:-1;;;;;828:525:80;;;;;;;;;:::o;874:641:-1:-;;;;1076:2;1064:9;1055:7;1051:23;1047:32;1044:2;;;-1:-1;;1082:12;1044:2;462:6;456:13;474:48;516:5;474:48;:::i;:::-;1260:2;1325:22;;285:13;1134:89;;-1:-1;303:48;285:13;303:48;:::i;:::-;1394:2;1467:22;;106:13;1268:89;;-1:-1;124:56;106:13;124:56;:::i;:::-;1402:97;;;;1038:477;;;;;:::o;1522:291::-;;1651:2;1639:9;1630:7;1626:23;1622:32;1619:2;;;-1:-1;;1657:12;1619:2;632:6;626:13;644:47;685:5;644:47;:::i;:::-;1709:88;1613:200;-1:-1;;;1613:200::o;2403:363::-;-1:-1;;;;;3505:54;;;2326:65;;3505:54;;2752:2;2737:18;;2191:37;2573:2;2558:18;;2544:222::o;3859:163::-;-1:-1;;;;;3505:54;;3941:58;;3931:2;;4013:1;;4003:12;3931:2;3925:97;:::o;:::-;828:525:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"9655":[{"length":32,"start":6989},{"length":32,"start":7322}],"9657":[{"length":32,"start":6733}],"10025":[{"length":32,"start":13112}],"10248":[{"length":32,"start":3746},{"length":32,"start":7075}],"10586":[{"length":32,"start":2413},{"length":32,"start":2498},{"length":32,"start":3120},{"length":32,"start":3343},{"length":32,"start":11100}],"10588":[{"length":32,"start":1391},{"length":32,"start":1539},{"length":32,"start":1641},{"length":32,"start":2543},{"length":32,"start":2719},{"length":32,"start":2920},{"length":32,"start":10811},{"length":32,"start":10899}]},"linkReferences":{},"object":"6080604052600436106101d85760003560e01c806380db15bd11610102578063c518e53111610095578063e8210e3c11610064578063e8210e3c14610421578063ecc0263714610434578063efe6910814610447578063f3cab6851461045a576101d8565b8063c518e531146103c8578063d293f290146103e8578063d80952d5146103fb578063db4c0e911461040e576101d8565b80638fe4624f116100d15780638fe4624f1461036f578063959fc17a14610382578063abf6d39914610395578063b6d24737146103a8576101d8565b806380db15bd146103215780638c57198b146103345780638d64cfbc146103475780638d928af81461035a576101d8565b8063433b08651161017a5780636d307ea8116101495780636d307ea8146102bd5780637ab6e03c146102d05780637bc008f5146102e35780637fd0e5d5146102f6576101d8565b8063433b0865146102645780635967b69614610277578063611b90dd1461029757806365ca4804146102aa576101d8565b80631c982441116101b65780631c982441146102185780632cbec84e1461022b5780632e6272ea1461023e5780633f85d39014610251576101d8565b80630e248fea146101dd5780631089e5e3146101f25780631836944614610205575b600080fd5b6101f06101eb366004613d90565b610487565b005b6101f0610200366004613d12565b610522565b6101f06102133660046143d1565b61070c565b6101f0610226366004613c40565b610915565b6101f0610239366004613d12565b610c12565b6101f061024c3660046144cd565b610d46565b6101f061025f366004613d46565b610e6f565b6101f061027236600461428b565b610f38565b34801561028357600080fd5b506101f06102923660046145bb565b6111e7565b6101f06102a53660046141e1565b611229565b6101f06102b836600461423b565b611344565b6101f06102cb3660046141e1565b611537565b6101f06102de36600461428b565b611759565b6101f06102f136600461423b565b61185f565b34801561030257600080fd5b5061030b611a4b565b6040516103189190614854565b60405180910390f35b6101f061032f366004613c85565b611a6f565b6101f0610342366004613f2d565b611b73565b6101f0610355366004614148565b611c1e565b34801561036657600080fd5b5061030b611c98565b6101f061037d366004614038565b611cbc565b6101f06103903660046140c7565b611ee6565b6101f06103a33660046141e1565b611f63565b3480156103b457600080fd5b506101f06103c33660046141b6565b612119565b3480156103d457600080fd5b506101f06103e33660046145eb565b6121bf565b6101f06103f63660046141e1565b6121cd565b6101f0610409366004613f90565b612455565b6101f061041c366004613c40565b6129e3565b6101f061042f3660046141e1565b612b93565b6101f0610442366004613e60565b612e58565b6101f06104553660046141e1565b612f50565b34801561046657600080fd5b5061047a6104753660046145bb565b612ff9565b6040516103189190614e9f565b8060005b8181101561051c5783838281811061049f57fe5b90506020020160208101906104b49190613c08565b6001600160a01b03166384e9bd7e336040518263ffffffff1660e01b81526004016104df9190614854565b600060405180830381600087803b1580156104f957600080fd5b505af115801561050d573d6000803e3d6000fd5b5050505080600101905061048b565b50505050565b61052b8261300b565b1561053c5761053982613056565b91505b6040517fb0e389000000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b0e38900906105a4908690600401614e9f565b60206040518083038186803b1580156105bc57600080fd5b505afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f491906145d3565b90506106296001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684613081565b6001600160a01b03841630146106f4576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906106a090879085906004016149b4565b602060405180830381600087803b1580156106ba57600080fd5b505af11580156106ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f29190613f11565b505b6106fd8261300b565b1561051c5761051c82826130fb565b3361071a6020890189613c08565b6001600160a01b031614806107435750306107386020890189613c08565b6001600160a01b0316145b6107685760405162461bcd60e51b815260040161075f90614d6f565b60405180910390fd5b60005b8a518110156107cd5760008b828151811061078257fe5b60200260200101516060015190506107998161300b565b156107c4576107a781613056565b8c83815181106107b357fe5b602002602001015160600181815250505b5060010161076b565b5060606107d8611c98565b6001600160a01b031663945bcec9858e8e8e8e8e8e8e8e6040518a63ffffffff1660e01b8152600401610812989796959493929190614c66565b6000604051808303818588803b15801561082b57600080fd5b505af115801561083f573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526108689190810190613dd0565b905060005b828110156109065761089384848381811061088457fe5b9050604002016020013561300b565b6108af5760405162461bcd60e51b815260040161075f90614ddd565b6108fe8484838181106108be57fe5b905060400201602001356108f9848787868181106108d857fe5b90506040020160000135815181106108ec57fe5b602002602001015161310e565b6130fb565b60010161086d565b50505050505050505050505050565b61091e8261300b565b1561092f5761092c82613056565b91505b6001600160a01b0384163014610992576001600160a01b03841633146109675760405162461bcd60e51b815260040161075f90614d6f565b610992847f000000000000000000000000000000000000000000000000000000000000000084613128565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390610a19907f00000000000000000000000000000000000000000000000000000000000000009086906004016149b4565b602060405180830381600087803b158015610a3357600080fd5b505af1158015610a47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6b9190613f11565b506040517fea598cb00000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ea598cb090610ad4908690600401614e9f565b602060405180830381600087803b158015610aee57600080fd5b505af1158015610b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2691906145d3565b90506001600160a01b0384163014610bf3576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90610b9f90879085906004016149b4565b602060405180830381600087803b158015610bb957600080fd5b505af1158015610bcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf19190613f11565b505b610bfc8261300b565b15610c0b57610c0b82826130fb565b5050505050565b610c1b8261300b565b15610c2c57610c2982613056565b91505b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a1903eab84306040518363ffffffff1660e01b8152600401610c7b9190614854565b6020604051808303818588803b158015610c9457600080fd5b505af1158015610ca8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ccd91906145d3565b90506001600160a01b03841630146106f4576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906106a090879085906004016149b4565b33610d546020870187613c08565b6001600160a01b03161480610d7d575030610d726020870187613c08565b6001600160a01b0316145b610d995760405162461bcd60e51b815260040161075f90614d6f565b610da6866080015161300b565b15610dbe57610db88660800151613056565b60808701525b6000610dc8611c98565b6001600160a01b03166352bbbe2984898989896040518663ffffffff1660e01b8152600401610dfa9493929190614e14565b6020604051808303818588803b158015610e1357600080fd5b505af1158015610e27573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e4c91906145d3565b9050610e578261300b565b15610e6657610e6682826130fb565b50505050505050565b6040517f3b9f73840000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633b9f738490610edb90879087903390600401614a1c565b602060405180830381600087803b158015610ef557600080fd5b505af1158015610f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2d91906145d3565b90506106fd8261300b565b610f418361300b565b15610f5257610f4f83613056565b92505b600082610fd157866001600160a01b03166351c0e0616040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f9457600080fd5b505af1158015610fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcc9190613c24565b611044565b866001600160a01b0316634800d97f6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561100c57600080fd5b505af1158015611020573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110449190613c24565b90506001600160a01b0386163014611089576001600160a01b038616331461107e5760405162461bcd60e51b815260040161075f90614d6f565b611089868286613128565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b3906110d0908a9088906004016149b4565b602060405180830381600087803b1580156110ea57600080fd5b505af11580156110fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111229190613f11565b506040517f2f2cab870000000000000000000000000000000000000000000000000000000081526000906001600160a01b03891690632f2cab8790611171908990899086908a906004016149f0565b602060405180830381600087803b15801561118b57600080fd5b505af115801561119f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c391906145d3565b90506111ce8361300b565b156111dd576111dd83826130fb565b5050505050505050565b7fc78533b5d3aff901cb655b9491c67366edabc3cd9cb680c3934f61d7eb07875261121182613056565b60405161121e9190614e9f565b60405180910390a150565b6112328261300b565b156112435761124082613056565b91505b6001600160a01b0384163014611286576001600160a01b038416331461127b5760405162461bcd60e51b815260040161075f90614d6f565b611286848684613128565b6040517fea785a5e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b0387169063ea785a5e906112d090879087906004016149b4565b602060405180830381600087803b1580156112ea57600080fd5b505af11580156112fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132291906145d3565b905061132d8261300b565b1561133c5761133c82826130fb565b505050505050565b61134d8161300b565b1561135e5761135b81613056565b90505b6001600160a01b03831630146113a1576001600160a01b03831633146113965760405162461bcd60e51b815260040161075f90614d6f565b6113a1838583613128565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526001600160a01b03851690632e1a7d4d906113e6908490600401614e9f565b600060405180830381600087803b15801561140057600080fd5b505af1158015611414573d6000803e3d6000fd5b505050506001600160a01b038216301461051c576000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561146357600080fd5b505afa158015611477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149b9190613c24565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0382169063a9059cbb906114e590869086906004016149b4565b602060405180830381600087803b1580156114ff57600080fd5b505af1158015611513573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133c9190613f11565b6115408261300b565b156115515761154e82613056565b91505b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561158c57600080fd5b505afa1580156115a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c49190613c24565b90506001600160a01b0385163014611609576001600160a01b03851633146115fe5760405162461bcd60e51b815260040161075f90614d6f565b611609858285613128565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b39061165090899087906004016149b4565b602060405180830381600087803b15801561166a57600080fd5b505af115801561167e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a29190613f11565b506040517f6e553f650000000000000000000000000000000000000000000000000000000081526000906001600160a01b03881690636e553f65906116ed9087908990600401614ea8565b602060405180830381600087803b15801561170757600080fd5b505af115801561171b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173f91906145d3565b905061174a8361300b565b15610e6657610e6683826130fb565b6117628361300b565b156117735761177083613056565b92505b6001600160a01b03851630146117b6576001600160a01b03851633146117ab5760405162461bcd60e51b815260040161075f90614d6f565b6117b6858785613128565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081526000906001600160a01b0388169063ead5d35990611802908890889088906004016149cd565b6040805180830381600087803b15801561181b57600080fd5b505af115801561182f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611853919061460c565b915050610e578261300b565b6118688161300b565b156118795761187681613056565b90505b6000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b1580156118b457600080fd5b505afa1580156118c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ec9190613c24565b90506001600160a01b0384163014611931576001600160a01b03841633146119265760405162461bcd60e51b815260040161075f90614d6f565b611931848284613128565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b39061197890889086906004016149b4565b602060405180830381600087803b15801561199257600080fd5b505af11580156119a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ca9190613f11565b506040517f6e553f650000000000000000000000000000000000000000000000000000000081526001600160a01b03861690636e553f6590611a129085908790600401614ea8565b600060405180830381600087803b158015611a2c57600080fd5b505af1158015611a40573d6000803e3d6000fd5b505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b038416301480611a84575082155b611aa05760405162461bcd60e51b815260040161075f90614da6565b606063fa6e671d60e01b338686604051602401611abf93929190614868565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935251611b2e928691869101614821565b60408051601f19818403018152919052905061133c6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016826131c4565b6040517fc65427940000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c654279490611be49030908a908a908a908a908a908a90600401614970565b600060405180830381600087803b158015611bfe57600080fd5b505af1158015611c12573d6000803e3d6000fd5b50505050505050505050565b866001600160a01b031663d505accf87611c36611c98565b88888888886040518863ffffffff1660e01b8152600401611c5d979695949392919061492f565b600060405180830381600087803b158015611c7757600080fd5b505af1158015611c8b573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b038516331480611cdb57506001600160a01b03851630145b611cf75760405162461bcd60e51b815260040161075f90614d6f565b6000611d028861323c565b90506000611d0f8361300b565b611d1a576000611daf565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038316906370a0823190611d5f908990600401614854565b60206040518083038186803b158015611d7757600080fd5b505afa158015611d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611daf91906145d3565b9050611dbf888660400151613242565b6040860152611dcc611c98565b6001600160a01b031663b95cac28858b8a8a8a6040518663ffffffff1660e01b8152600401611dfe9493929190614bc0565b6000604051808303818588803b158015611e1757600080fd5b505af1158015611e2b573d6000803e3d6000fd5b5050505050611e398361300b565b15611a40576040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038416906370a0823190611e86908a90600401614854565b60206040518083038186803b158015611e9e57600080fd5b505afa158015611eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed691906145d3565b9050611c12846108f98385613270565b876001600160a01b0316638fcbaf0c88611efe611c98565b8989898989896040518963ffffffff1660e01b8152600401611f279897969594939291906148e6565b600060405180830381600087803b158015611f4157600080fd5b505af1158015611f55573d6000803e3d6000fd5b505050505050505050505050565b611f6c8261300b565b15611f7d57611f7a82613056565b91505b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611fb857600080fd5b505afa158015611fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff09190613c24565b90506001600160a01b0385163014612035576001600160a01b038516331461202a5760405162461bcd60e51b815260040161075f90614d6f565b612035858285613128565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b39061207c90899087906004016149b4565b602060405180830381600087803b15801561209657600080fd5b505af11580156120aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ce9190613f11565b506040517f2f4f21e20000000000000000000000000000000000000000000000000000000081526000906001600160a01b03881690632f4f21e2906116ed90889088906004016149b4565b6121228161300b565b156121335761213081613056565b90505b816001600160a01b031663095ea7b361214a611c98565b836040518363ffffffff1660e01b81526004016121689291906149b4565b602060405180830381600087803b15801561218257600080fd5b505af1158015612196573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ba9190613f11565b505050565b6121c982826130fb565b5050565b6121d68261300b565b156121e7576121e482613056565b91505b6001600160a01b038416301461222a576001600160a01b038416331461221f5760405162461bcd60e51b815260040161075f90614d6f565b61222a848684613128565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561226557600080fd5b505afa158015612279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229d9190613c24565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03871690632e1a7d4d906122e5908690600401614e9f565b600060405180830381600087803b1580156122ff57600080fd5b505af1158015612313573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841691506370a082319061235f903090600401614854565b60206040518083038186803b15801561237757600080fd5b505afa15801561238b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123af91906145d3565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0383169063a9059cbb906123f990889085906004016149b4565b602060405180830381600087803b15801561241357600080fd5b505af1158015612427573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244b9190613f11565b5061174a8361300b565b6001600160a01b03851633148061247457506001600160a01b03851630145b6124905760405162461bcd60e51b815260040161075f90614d6f565b60608167ffffffffffffffff811180156124a957600080fd5b506040519080825280602002602001820160405280156124d3578160200160208202803683370190505b50905060608267ffffffffffffffff811180156124ef57600080fd5b50604051908082528060200260200182016040528015612519578160200160208202803683370190505b50905060005b838110156126895761253685858381811061088457fe5b6125525760405162461bcd60e51b815260040161075f90614ddd565b855160009086868481811061256357fe5b905060400201600001358151811061257757fe5b602002602001015190508660600151156125c55761259481613286565b8483815181106125a057fe5b60200260200101906001600160a01b031690816001600160a01b031681525050612680565b6125ce81613289565b61265b576125db81613286565b6001600160a01b03166370a08231896040518263ffffffff1660e01b81526004016126069190614854565b60206040518083038186803b15801561261e57600080fd5b505afa158015612632573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265691906145d3565b612667565b876001600160a01b0316315b83838151811061267357fe5b6020026020010181815250505b5060010161251f565b508460600151156127205761269c611c98565b6001600160a01b0316630f5a6efa87846040518363ffffffff1660e01b81526004016126c992919061488c565b60006040518083038186803b1580156126e157600080fd5b505afa1580156126f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261271d9190810190613ed6565b90505b61272e888660400151613296565b604086015261273b611c98565b6001600160a01b0316638bdb39138a8989896040518563ffffffff1660e01b815260040161276c9493929190614bc0565b600060405180830381600087803b15801561278657600080fd5b505af115801561279a573d6000803e3d6000fd5b50606092508591505067ffffffffffffffff811180156127b957600080fd5b506040519080825280602002602001820160405280156127e3578160200160208202803683370190505b509050856060015115612880576127f8611c98565b6001600160a01b0316630f5a6efa88856040518363ffffffff1660e01b815260040161282592919061488c565b60006040518083038186803b15801561283d57600080fd5b505afa158015612851573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128799190810190613ed6565b905061297e565b60005b8481101561297c57865160009087878481811061289c57fe5b90506040020160000135815181106128b057fe5b602002602001015190506128c381613289565b612950576128d081613286565b6001600160a01b03166370a082318a6040518263ffffffff1660e01b81526004016128fb9190614854565b60206040518083038186803b15801561291357600080fd5b505afa158015612927573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294b91906145d3565b61295c565b886001600160a01b0316315b83838151811061296857fe5b602090810291909101015250600101612883565b505b60005b84811015611c8b576129db86868381811061299857fe5b905060400201602001356108f98584815181106129b157fe5b60200260200101518585815181106129c557fe5b602002602001015161327090919063ffffffff16565b600101612981565b6129ec8261300b565b156129fd576129fa82613056565b91505b6001600160a01b0384163014612a60576001600160a01b0384163314612a355760405162461bcd60e51b815260040161075f90614d6f565b612a60847f000000000000000000000000000000000000000000000000000000000000000084613128565b6040517fde0e9a3e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063de0e9a3e90612ac8908690600401614e9f565b602060405180830381600087803b158015612ae257600080fd5b505af1158015612af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1a91906145d3565b90506001600160a01b0384163014610bf3576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90610b9f90879085906004016149b4565b612b9c8261300b565b15612bad57612baa82613056565b91505b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612be857600080fd5b505afa158015612bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c209190613c24565b90506001600160a01b0385163014612c65576001600160a01b0385163314612c5a5760405162461bcd60e51b815260040161075f90614d6f565b612c65858285613128565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b390612cac90899087906004016149b4565b602060405180830381600087803b158015612cc657600080fd5b505af1158015612cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cfe9190613f11565b506040517fb6b55f250000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063b6b55f2590612d44908690600401614e9f565b600060405180830381600087803b158015612d5e57600080fd5b505af1158015612d72573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03891691506370a0823190612dbe903090600401614854565b60206040518083038186803b158015612dd657600080fd5b505afa158015612dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0e91906145d3565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0388169063a9059cbb906123f990889085906004016149b4565b60005b82811015612eec5733848483818110612e7057fe5b905060a002016060016020810190612e889190613c08565b6001600160a01b03161480612ec8575030848483818110612ea557fe5b905060a002016060016020810190612ebd9190613c08565b6001600160a01b0316145b612ee45760405162461bcd60e51b815260040161075f90614d6f565b600101612e5b565b50612ef5611c98565b6001600160a01b0316630e8e3e848285856040518463ffffffff1660e01b8152600401612f23929190614a7c565b6000604051808303818588803b158015612f3c57600080fd5b505af11580156111dd573d6000803e3d6000fd5b612f598261300b565b15612f6a57612f6782613056565b91505b6001600160a01b0384163014612fad576001600160a01b0384163314612fa25760405162461bcd60e51b815260040161075f90614d6f565b612fad848684613128565b6040517fba0876520000000000000000000000000000000000000000000000000000000081526000906001600160a01b0387169063ba087652906112d090869088903090600401614ebf565b6000613004826132bd565b9392505050565b7fba100000000000000000000000000000000000000000000000000000000000007ffff00000000000000000000000000000000000000000000000000000000000008216145b919050565b6000806000613064846132bd565b91509150613071846132d4565b1561300457600082559392505050565b613090814710156101a361331b565b6000826001600160a01b0316826040516130a990613286565b60006040518083038185875af1925050503d80600081146130e6576040519150601f19603f3d011682016040523d82523d6000602084013e6130eb565b606091505b505090506121ba816101a461331b565b600061310683613329565b919091555050565b60008082136131205781600003613122565b815b92915050565b80613132576121ba565b60408051600180825281830190925260609160208083019080368337019050509050828160008151811061316257fe5b6001600160a01b03929092166020928302919091019091015260408051600180825281830190925260609181602001602082028036833701905050905082816000815181106131ad57fe5b602002602001018181525050610c0b858383613387565b606060006060846001600160a01b0316846040516131e29190614805565b6000604051808303816000865af19150503d806000811461321f576040519150601f19603f3d011682016040523d82523d6000602084013e613224565b606091505b509150915061323382826134c1565b95945050505050565b60601c90565b6060600083801561324f57fe5b14156132655761325e826134eb565b9050613122565b613122610136613528565b600061328083831115600161331b565b50900390565b90565b6001600160a01b03161590565b606060008380156132a357fe5b14156132b25761325e82613555565b613122610150613528565b6000806132c983613329565b915081549050915091565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b816121c9576121c981613528565b600060016133368361359e565b7f0000000000000000000000000000000000000000000000000000000000000000604051602001613368929190614846565b60408051808303601f1901815291905280516020909101200392915050565b6060825167ffffffffffffffff811180156133a157600080fd5b506040519080825280602002602001820160405280156133db57816020015b6133c86137ec565b8152602001906001900390816133c05790505b50905060005b8351811015613473576040805160a08101909152806003815260200185838151811061340957fe5b60200260200101516001600160a01b0316815260200184838151811061342b57fe5b60200260200101518152602001866001600160a01b03168152602001306001600160a01b031681525082828151811061346057fe5b60209081029190910101526001016133e1565b5061347c611c98565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b81526004016134a79190614b2a565b600060405180830381600087803b158015612f3c57600080fd5b606082156134d0575080613122565b8151156134e05781518083602001fd5b6131226101ae613528565b606060006134f8836135c1565b9050600181600381111561350857fe5b141561351f57613517836135d7565b915050613051565b82915050613051565b613552817f42414c0000000000000000000000000000000000000000000000000000000000613685565b50565b60606000613562836135c1565b9050600081600381111561357257fe5b141561358157613517836136e6565b600181600381111561358f57fe5b141561351f5761351783613749565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b60008180602001905181019061312291906142fa565b60608060006135e58461379c565b915091506000805b835181101561364b57600084828151811061360457fe5b602002602001015190506136178161300b565b156136425761362581613056565b85838151811061363157fe5b602002602001018181525050600192505b506001016135ed565b50806136575784613233565b6001838360405160200161366d93929190614c34565b60405160208183030381529060405295945050505050565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60606000806136f4846137bf565b915091506137018261300b565b1561373f5761370f82613056565b91506000828260405160200161372793929190614c13565b60405160208183030381529060405292505050613051565b8392505050613051565b60606000613756836137d6565b90506137618161300b565b1561351f5761376f81613056565b9050600181604051602001613785929190614bfc565b604051602081830303815290604052915050613051565b60606000828060200190518101906137b49190614379565b909590945092505050565b600080828060200190518101906137b49190614343565b6000818060200190518101906130049190614316565b6040805160a081019091528060008152600060208201819052604082018190526060820181905260809091015290565b803561312281614f72565b60008083601f840112613838578182fd5b50813567ffffffffffffffff81111561384f578182fd5b602083019150836020808302850101111561386957600080fd5b9250929050565b600082601f830112613880578081fd5b813561389361388e82614f05565b614ede565b8181529150602080830190848101818402860182018710156138b457600080fd5b60005b848110156138dc5781356138ca81614f72565b845292820192908201906001016138b7565b505050505092915050565b600082601f8301126138f7578081fd5b813561390561388e82614f05565b818152915060208083019084810160005b848110156138dc578135870160a080601f19838c0301121561393757600080fd5b61394081614ede565b85830135815260408084013587830152606080850135828401526080915081850135818401525082840135925067ffffffffffffffff83111561398257600080fd5b6139908c8885870101613ab2565b90820152865250509282019290820190600101613916565b60008083601f8401126139b9578182fd5b50813567ffffffffffffffff8111156139d0578182fd5b60208301915083602060408302850101111561386957600080fd5b600082601f8301126139fb578081fd5b8135613a0961388e82614f05565b818152915060208083019084810181840286018201871015613a2a57600080fd5b60005b848110156138dc57813584529282019290820190600101613a2d565b600082601f830112613a59578081fd5b8151613a6761388e82614f05565b818152915060208083019084810181840286018201871015613a8857600080fd5b60005b848110156138dc57815184529282019290820190600101613a8b565b803561312281614f87565b600082601f830112613ac2578081fd5b813567ffffffffffffffff811115613ad8578182fd5b613aeb6020601f19601f84011601614ede565b9150808252836020828501011115613b0257600080fd5b8060208401602084013760009082016020015292915050565b80356001811061312257600080fd5b80356002811061312257600080fd5b600060808284031215613b4a578081fd5b613b546080614ede565b9050813567ffffffffffffffff80821115613b6e57600080fd5b613b7a85838601613870565b83526020840135915080821115613b9057600080fd5b613b9c858386016139eb565b60208401526040840135915080821115613bb557600080fd5b50613bc284828501613ab2565b604083015250613bd58360608401613aa7565b606082015292915050565b600060808284031215613bf1578081fd5b50919050565b803560ff8116811461312257600080fd5b600060208284031215613c19578081fd5b813561300481614f72565b600060208284031215613c35578081fd5b815161300481614f72565b60008060008060808587031215613c55578283fd5b8435613c6081614f72565b93506020850135613c7081614f72565b93969395505050506040820135916060013590565b60008060008060608587031215613c9a578182fd5b8435613ca581614f72565b93506020850135613cb581614f87565b9250604085013567ffffffffffffffff80821115613cd1578384fd5b818701915087601f830112613ce4578384fd5b813581811115613cf2578485fd5b886020828501011115613d03578485fd5b95989497505060200194505050565b600080600060608486031215613d26578081fd5b8335613d3181614f72565b95602085013595506040909401359392505050565b600080600060408486031215613d5a578081fd5b833567ffffffffffffffff811115613d70578182fd5b613d7c86828701613827565b909790965060209590950135949350505050565b60008060208385031215613da2578182fd5b823567ffffffffffffffff811115613db8578283fd5b613dc485828601613827565b90969095509350505050565b60006020808385031215613de2578182fd5b825167ffffffffffffffff811115613df8578283fd5b8301601f81018513613e08578283fd5b8051613e1661388e82614f05565b8181528381019083850185840285018601891015613e32578687fd5b8694505b83851015613e54578051835260019490940193918501918501613e36565b50979650505050505050565b600080600060408486031215613e74578081fd5b833567ffffffffffffffff80821115613e8b578283fd5b818601915086601f830112613e9e578283fd5b813581811115613eac578384fd5b87602060a083028501011115613ec0578384fd5b6020928301989097509590910135949350505050565b600060208284031215613ee7578081fd5b815167ffffffffffffffff811115613efd578182fd5b613f0984828501613a49565b949350505050565b600060208284031215613f22578081fd5b815161300481614f87565b60008060008060008060c08789031215613f45578384fd5b8635613f5081614f87565b95506020870135613f6081614f72565b945060408701359350613f768860608901613bf7565b92506080870135915060a087013590509295509295509295565b600080600080600080600060c0888a031215613faa578485fd5b87359650613fbb8960208a01613b1b565b95506040880135613fcb81614f72565b94506060880135613fdb81614f72565b9350608088013567ffffffffffffffff80821115613ff7578283fd5b6140038b838c01613b39565b945060a08a0135915080821115614018578283fd5b506140258a828b016139a8565b989b979a50959850939692959293505050565b600080600080600080600060e0888a031215614052578081fd5b873596506140638960208a01613b1b565b9550604088013561407381614f72565b9450606088013561408381614f72565b9350608088013567ffffffffffffffff81111561409e578182fd5b6140aa8a828b01613b39565b93505060a0880135915060c0880135905092959891949750929550565b600080600080600080600080610100898b0312156140e3578182fd5b88356140ee81614f72565b975060208901356140fe81614f72565b96506040890135955060608901359450608089013561411c81614f87565b935061412b8a60a08b01613bf7565b925060c0890135915060e089013590509295985092959890939650565b600080600080600080600060e0888a031215614162578081fd5b873561416d81614f72565b9650602088013561417d81614f72565b9550604088013594506060880135935061419a8960808a01613bf7565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156141c8578182fd5b82356141d381614f72565b946020939093013593505050565b600080600080600060a086880312156141f8578283fd5b853561420381614f72565b9450602086013561421381614f72565b9350604086013561422381614f72565b94979396509394606081013594506080013592915050565b60008060008060808587031215614250578182fd5b843561425b81614f72565b9350602085013561426b81614f72565b9250604085013561427b81614f72565b9396929550929360600135925050565b60008060008060008060c087890312156142a3578384fd5b86356142ae81614f72565b955060208701356142be81614f72565b945060408701356142ce81614f72565b93506060870135925060808701356142e581614f87565b8092505060a087013590509295509295509295565b60006020828403121561430b578081fd5b815161300481614f95565b60008060408385031215614328578182fd5b825161433381614f95565b6020939093015192949293505050565b600080600060608486031215614357578081fd5b835161436281614f95565b602085015160409095015190969495509392505050565b60008060006060848603121561438d578081fd5b835161439881614f95565b602085015190935067ffffffffffffffff8111156143b4578182fd5b6143c086828701613a49565b925050604084015190509250925092565b60008060008060008060008060008060006101608c8e0312156143f2578485fd5b6143fc8d8d613b2a565b9a5067ffffffffffffffff8060208e01351115614417578586fd5b6144278e60208f01358f016138e7565b9a508060408e01351115614439578586fd5b6144498e60408f01358f01613827565b909a50985061445b8e60608f01613be0565b97508060e08e0135111561446d578586fd5b61447d8e60e08f01358f01613827565b90975095506101008d013594506101208d013593506101408d01358110156144a3578283fd5b506144b58d6101408e01358e016139a8565b81935080925050509295989b509295989b9093969950565b60008060008060008061012087890312156144e6578384fd5b863567ffffffffffffffff808211156144fd578586fd5b9088019060c0828b031215614510578586fd5b61451a60c0614ede565b8235815261452b8b60208501613b2a565b6020820152604083013561453e81614f72565b60408201526145508b6060850161381c565b60608201526080830135608082015260a083013582811115614570578788fd5b61457c8c828601613ab2565b60a0830152508098505050506145958860208901613be0565b959895975050505060a08401359360c08101359360e08201359350610100909101359150565b6000602082840312156145cc578081fd5b5035919050565b6000602082840312156145e4578081fd5b5051919050565b600080604083850312156145fd578182fd5b50508035926020909101359150565b6000806040838503121561461e578182fd5b505080516020909101519092909150565b6001600160a01b03169052565b60008284526020808501945082825b8581101561467957813561465e81614f72565b6001600160a01b03168752958201959082019060010161464b565b509495945050505050565b60008284526020808501945082825b8581101561467957813587529582019590820190600101614693565b6000815180845260208085019450808401835b83811015614679578151875295820195908201906001016146c2565b15159052565b600081518084526146fc816020860160208601614f32565b601f01601f19169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b818110156147555783516001600160a01b031683529284019291840191600101614730565b50508285015191508581038387015261476e81836146af565b925050506040830151848203604086015261478982826146e4565b915050606083015161479e60608601826146de565b509392505050565b80356147b181614f72565b6001600160a01b0390811683526020820135906147cd82614f87565b90151560208401526040820135906147e482614f72565b16604083015260608101356147f881614f87565b8015156060840152505050565b60008251614817818460208701614f32565b9190910192915050565b60008451614833818460208901614f32565b8201838582379092019182525092915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6000604082016001600160a01b03808616845260206040818601528286518085526060870191508288019450855b818110156148d85785518516835294830194918301916001016148ba565b509098975050505050505050565b6001600160a01b039889168152969097166020870152604086019490945260608501929092521515608084015260ff1660a083015260c082015260e08101919091526101000190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0397881681529515156020870152939095166040850152606084019190915260ff16608083015260a082019290925260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b6001600160a01b03949094168452602084019290925261ffff1660408301521515606082015260800190565b6040808252810183905260008460608301825b86811015614a5f5760208335614a4481614f72565b6001600160a01b031683529283019290910190600101614a2f565b5080925050506001600160a01b0383166020830152949350505050565b6020808252818101839052600090604080840186845b87811015614b1d578135614aa581614f95565b614aae81614f5e565b835281850135614abd81614f72565b6001600160a01b03168386015281840135848401526060614ae081840184614f25565b614aec8286018261462f565b50506080614afc81840184614f25565b614b088286018261462f565b505060a0928301929190910190600101614a92565b5090979650505050505050565b602080825282518282018190526000919060409081850190868401855b82811015614bb35781518051614b5c81614f5e565b8552808701516001600160a01b0316878601528581015186860152606080820151614b898288018261462f565b505060809081015190614b9e8682018361462f565b505060a0939093019290850190600101614b47565b5091979650505050505050565b60008582526001600160a01b03808616602084015280851660408401525060806060830152614bf26080830184614710565b9695505050505050565b60408101614c0984614f5e565b9281526020015290565b60608101614c2085614f5e565b938152602081019290925260409091015290565b6000614c3f85614f5e565b84825260606020830152614c5660608301856146af565b9050826040830152949350505050565b6000610120808301614c778c614f68565b8b84526020808501929092528a5190819052610140808501928281028601909101918c8201855b82811015614d1e578785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00186528151805186528481015185870152604080820151908701526060808201519087015260809081015160a091870182905290614d0a818801836146e4565b978601979650505090830190600101614c9e565b505050508381036040850152614d35818a8c61463c565b915050614d4560608401886147a6565b82810360e0840152614d58818688614684565b915050826101008301529998505050505050505050565b60208082526010908201527f496e636f72726563742073656e64657200000000000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b60208082526019908201527f696e76616c696420636861696e6564207265666572656e636500000000000000604082015260600190565b600060e08252855160e08301526020860151614e2f81614f68565b61010083015260408601516001600160a01b03908116610120840152606087015116610140830152608086015161016083015260a086015160c0610180840152614e7d6101a08401826146e4565b915050614e8d60208301866147a6565b60a082019390935260c0015292915050565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526001600160a01b03918216602084015216604082015260600190565b60405181810167ffffffffffffffff81118282101715614efd57600080fd5b604052919050565b600067ffffffffffffffff821115614f1b578081fd5b5060209081020190565b6000823561300481614f72565b60005b83811015614f4d578181015183820152602001614f35565b8381111561051c5750506000910152565b6004811061355257fe5b6002811061355257fe5b6001600160a01b038116811461355257600080fd5b801515811461355257600080fd5b6004811061355257600080fdfea2646970667358221220613cf1be8682d8c5febe4adc1dc31da069a8a2c03e12655d24d3e6090df85df164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80DB15BD GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xC518E531 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE8210E3C GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE8210E3C EQ PUSH2 0x421 JUMPI DUP1 PUSH4 0xECC02637 EQ PUSH2 0x434 JUMPI DUP1 PUSH4 0xEFE69108 EQ PUSH2 0x447 JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0x45A JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0xC518E531 EQ PUSH2 0x3C8 JUMPI DUP1 PUSH4 0xD293F290 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0xD80952D5 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0xDB4C0E91 EQ PUSH2 0x40E JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x8FE4624F GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x8FE4624F EQ PUSH2 0x36F JUMPI DUP1 PUSH4 0x959FC17A EQ PUSH2 0x382 JUMPI DUP1 PUSH4 0xABF6D399 EQ PUSH2 0x395 JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0x3A8 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x321 JUMPI DUP1 PUSH4 0x8C57198B EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x8D64CFBC EQ PUSH2 0x347 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x35A JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x6D307EA8 GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x6D307EA8 EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0x7AB6E03C EQ PUSH2 0x2D0 JUMPI DUP1 PUSH4 0x7BC008F5 EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0x2F6 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 EQ PUSH2 0x264 JUMPI DUP1 PUSH4 0x5967B696 EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x611B90DD EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0x65CA4804 EQ PUSH2 0x2AA JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x1C982441 GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x1C982441 EQ PUSH2 0x218 JUMPI DUP1 PUSH4 0x2CBEC84E EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0x2E6272EA EQ PUSH2 0x23E JUMPI DUP1 PUSH4 0x3F85D390 EQ PUSH2 0x251 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0xE248FEA EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x1089E5E3 EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0x18369446 EQ PUSH2 0x205 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F0 PUSH2 0x1EB CALLDATASIZE PUSH1 0x4 PUSH2 0x3D90 JUMP JUMPDEST PUSH2 0x487 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F0 PUSH2 0x200 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D12 JUMP JUMPDEST PUSH2 0x522 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x213 CALLDATASIZE PUSH1 0x4 PUSH2 0x43D1 JUMP JUMPDEST PUSH2 0x70C JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x226 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C40 JUMP JUMPDEST PUSH2 0x915 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x239 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D12 JUMP JUMPDEST PUSH2 0xC12 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x24C CALLDATASIZE PUSH1 0x4 PUSH2 0x44CD JUMP JUMPDEST PUSH2 0xD46 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x25F CALLDATASIZE PUSH1 0x4 PUSH2 0x3D46 JUMP JUMPDEST PUSH2 0xE6F JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x272 CALLDATASIZE PUSH1 0x4 PUSH2 0x428B JUMP JUMPDEST PUSH2 0xF38 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F0 PUSH2 0x292 CALLDATASIZE PUSH1 0x4 PUSH2 0x45BB JUMP JUMPDEST PUSH2 0x11E7 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x41E1 JUMP JUMPDEST PUSH2 0x1229 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x423B JUMP JUMPDEST PUSH2 0x1344 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2CB CALLDATASIZE PUSH1 0x4 PUSH2 0x41E1 JUMP JUMPDEST PUSH2 0x1537 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2DE CALLDATASIZE PUSH1 0x4 PUSH2 0x428B JUMP JUMPDEST PUSH2 0x1759 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x423B JUMP JUMPDEST PUSH2 0x185F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x1A4B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x318 SWAP2 SWAP1 PUSH2 0x4854 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH2 0x32F CALLDATASIZE PUSH1 0x4 PUSH2 0x3C85 JUMP JUMPDEST PUSH2 0x1A6F JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x342 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F2D JUMP JUMPDEST PUSH2 0x1B73 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x355 CALLDATASIZE PUSH1 0x4 PUSH2 0x4148 JUMP JUMPDEST PUSH2 0x1C1E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x1C98 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x37D CALLDATASIZE PUSH1 0x4 PUSH2 0x4038 JUMP JUMPDEST PUSH2 0x1CBC JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x390 CALLDATASIZE PUSH1 0x4 PUSH2 0x40C7 JUMP JUMPDEST PUSH2 0x1EE6 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x3A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x41E1 JUMP JUMPDEST PUSH2 0x1F63 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F0 PUSH2 0x3C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x41B6 JUMP JUMPDEST PUSH2 0x2119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F0 PUSH2 0x3E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x45EB JUMP JUMPDEST PUSH2 0x21BF JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x3F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x41E1 JUMP JUMPDEST PUSH2 0x21CD JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x409 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F90 JUMP JUMPDEST PUSH2 0x2455 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x41C CALLDATASIZE PUSH1 0x4 PUSH2 0x3C40 JUMP JUMPDEST PUSH2 0x29E3 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x42F CALLDATASIZE PUSH1 0x4 PUSH2 0x41E1 JUMP JUMPDEST PUSH2 0x2B93 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x442 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E60 JUMP JUMPDEST PUSH2 0x2E58 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x455 CALLDATASIZE PUSH1 0x4 PUSH2 0x41E1 JUMP JUMPDEST PUSH2 0x2F50 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x466 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47A PUSH2 0x475 CALLDATASIZE PUSH1 0x4 PUSH2 0x45BB JUMP JUMPDEST PUSH2 0x2FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x318 SWAP2 SWAP1 PUSH2 0x4E9F JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x51C JUMPI DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0x49F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4B4 SWAP2 SWAP1 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x84E9BD7E CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4DF SWAP2 SWAP1 PUSH2 0x4854 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x50D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x48B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x52B DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x53C JUMPI PUSH2 0x539 DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB0E3890000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xB0E38900 SWAP1 PUSH2 0x5A4 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x5F4 SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH2 0x629 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP5 PUSH2 0x3081 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x6F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x6A0 SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x6F2 SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP JUMPDEST PUSH2 0x6FD DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x51C JUMPI PUSH2 0x51C DUP3 DUP3 PUSH2 0x30FB JUMP JUMPDEST CALLER PUSH2 0x71A PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x743 JUMPI POP ADDRESS PUSH2 0x738 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x768 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0x7CD JUMPI PUSH1 0x0 DUP12 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x782 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD SWAP1 POP PUSH2 0x799 DUP2 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x7C4 JUMPI PUSH2 0x7A7 DUP2 PUSH2 0x3056 JUMP JUMPDEST DUP13 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x7B3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x76B JUMP JUMPDEST POP PUSH1 0x60 PUSH2 0x7D8 PUSH2 0x1C98 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x945BCEC9 DUP6 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x812 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C66 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x82B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x83F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x868 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3DD0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x906 JUMPI PUSH2 0x893 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x884 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x300B JUMP JUMPDEST PUSH2 0x8AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4DDD JUMP JUMPDEST PUSH2 0x8FE DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x8BE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8F9 DUP5 DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x8D8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x8EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x310E JUMP JUMPDEST PUSH2 0x30FB JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x86D JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x91E DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x92F JUMPI PUSH2 0x92C DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x992 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x967 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x992 DUP5 PUSH32 0x0 DUP5 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0xA19 SWAP1 PUSH32 0x0 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xA6B SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0xEA598CB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xEA598CB0 SWAP1 PUSH2 0xAD4 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB02 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xB26 SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0xBF3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0xB9F SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBCD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xBF1 SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP JUMPDEST PUSH2 0xBFC DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0xC0B JUMPI PUSH2 0xC0B DUP3 DUP3 PUSH2 0x30FB JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xC1B DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0xC2C JUMPI PUSH2 0xC29 DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA1903EAB DUP5 ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC7B SWAP2 SWAP1 PUSH2 0x4854 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCA8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP 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 0xCCD SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x6F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x6A0 SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST CALLER PUSH2 0xD54 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xD7D JUMPI POP ADDRESS PUSH2 0xD72 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xD99 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0xDA6 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0xDBE JUMPI PUSH2 0xDB8 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x3056 JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0xDC8 PUSH2 0x1C98 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52BBBE29 DUP5 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDFA SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4E14 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE27 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP 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 0xE4C SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH2 0xE57 DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0xE66 JUMPI PUSH2 0xE66 DUP3 DUP3 PUSH2 0x30FB JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x3B9F738400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x3B9F7384 SWAP1 PUSH2 0xEDB SWAP1 DUP8 SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x4A1C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF09 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xF2D SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH2 0x6FD DUP3 PUSH2 0x300B JUMP JUMPDEST PUSH2 0xF41 DUP4 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0xF52 JUMPI PUSH2 0xF4F DUP4 PUSH2 0x3056 JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xFD1 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x51C0E061 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFA8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xFCC SWAP2 SWAP1 PUSH2 0x3C24 JUMP JUMPDEST PUSH2 0x1044 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4800D97F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x100C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1020 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1044 SWAP2 SWAP1 PUSH2 0x3C24 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ADDRESS EQ PUSH2 0x1089 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND CALLER EQ PUSH2 0x107E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x1089 DUP7 DUP3 DUP7 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x10D0 SWAP1 DUP11 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1122 SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x2F2CAB8700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x2F2CAB87 SWAP1 PUSH2 0x1171 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP7 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x49F0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x118B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x119F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x11C3 SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH2 0x11CE DUP4 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x11DD JUMPI PUSH2 0x11DD DUP4 DUP3 PUSH2 0x30FB JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0xC78533B5D3AFF901CB655B9491C67366EDABC3CD9CB680C3934F61D7EB078752 PUSH2 0x1211 DUP3 PUSH2 0x3056 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x121E SWAP2 SWAP1 PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x1232 DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x1243 JUMPI PUSH2 0x1240 DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x1286 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x127B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x1286 DUP5 DUP7 DUP5 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEA785A5E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xEA785A5E SWAP1 PUSH2 0x12D0 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1322 SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH2 0x132D DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x133C JUMPI PUSH2 0x133C DUP3 DUP3 PUSH2 0x30FB JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x134D DUP2 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x135E JUMPI PUSH2 0x135B DUP2 PUSH2 0x3056 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ PUSH2 0x13A1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER EQ PUSH2 0x1396 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x13A1 DUP4 DUP6 DUP4 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x13E6 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1414 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ PUSH2 0x51C JUMPI PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1477 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x149B SWAP2 SWAP1 PUSH2 0x3C24 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x14E5 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1513 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x133C SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST PUSH2 0x1540 DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x1551 JUMPI PUSH2 0x154E DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x158C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x15C4 SWAP2 SWAP1 PUSH2 0x3C24 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x1609 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x15FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x1609 DUP6 DUP3 DUP6 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x1650 SWAP1 DUP10 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x166A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x167E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x16A2 SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x16ED SWAP1 DUP8 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4EA8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1707 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x171B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x173F SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH2 0x174A DUP4 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0xE66 JUMPI PUSH2 0xE66 DUP4 DUP3 PUSH2 0x30FB JUMP JUMPDEST PUSH2 0x1762 DUP4 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x1773 JUMPI PUSH2 0x1770 DUP4 PUSH2 0x3056 JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x17B6 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x17AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x17B6 DUP6 DUP8 DUP6 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEAD5D35900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xEAD5D359 SWAP1 PUSH2 0x1802 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x49CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x181B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x182F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1853 SWAP2 SWAP1 PUSH2 0x460C JUMP JUMPDEST SWAP2 POP POP PUSH2 0xE57 DUP3 PUSH2 0x300B JUMP JUMPDEST PUSH2 0x1868 DUP2 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x1879 JUMPI PUSH2 0x1876 DUP2 PUSH2 0x3056 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x18EC SWAP2 SWAP1 PUSH2 0x3C24 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x1931 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x1926 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x1931 DUP5 DUP3 DUP5 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x1978 SWAP1 DUP9 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1992 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x19CA SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x1A12 SWAP1 DUP6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4EA8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A40 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ DUP1 PUSH2 0x1A84 JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x1AA0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4DA6 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1ABF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4868 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x1B2E SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x4821 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x133C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP3 PUSH2 0x31C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC654279400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xC6542794 SWAP1 PUSH2 0x1BE4 SWAP1 ADDRESS SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x4970 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C12 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD505ACCF DUP8 PUSH2 0x1C36 PUSH2 0x1C98 JUMP JUMPDEST DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C5D SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x492F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x1CDB JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x1CF7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D02 DUP9 PUSH2 0x323C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1D0F DUP4 PUSH2 0x300B JUMP JUMPDEST PUSH2 0x1D1A JUMPI PUSH1 0x0 PUSH2 0x1DAF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1D5F SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4854 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1DAF SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DBF DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x3242 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x1DCC PUSH2 0x1C98 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB95CAC28 DUP6 DUP12 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DFE SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BC0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E2B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x1E39 DUP4 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x1A40 JUMPI PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1E86 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x4854 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EB2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1ED6 SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH2 0x1C12 DUP5 PUSH2 0x8F9 DUP4 DUP6 PUSH2 0x3270 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8FCBAF0C DUP9 PUSH2 0x1EFE PUSH2 0x1C98 JUMP JUMPDEST DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F27 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x48E6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F55 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1F6C DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x1F7D JUMPI PUSH2 0x1F7A DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FCC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1FF0 SWAP2 SWAP1 PUSH2 0x3C24 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x2035 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x202A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x2035 DUP6 DUP3 DUP6 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x207C SWAP1 DUP10 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2096 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x20CE SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x2F4F21E200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x2F4F21E2 SWAP1 PUSH2 0x16ED SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH2 0x2122 DUP2 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x2133 JUMPI PUSH2 0x2130 DUP2 PUSH2 0x3056 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95EA7B3 PUSH2 0x214A PUSH2 0x1C98 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2168 SWAP3 SWAP2 SWAP1 PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2196 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x21BA SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x21C9 DUP3 DUP3 PUSH2 0x30FB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x21D6 DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x21E7 JUMPI PUSH2 0x21E4 DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x222A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x221F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x222A DUP5 DUP7 DUP5 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2279 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x229D SWAP2 SWAP1 PUSH2 0x3C24 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x22E5 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2313 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x235F SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4854 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x238B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x23AF SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x23F9 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2427 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x244B SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP PUSH2 0x174A DUP4 PUSH2 0x300B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x2474 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x2490 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x24A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x24D3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x24EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2519 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2689 JUMPI PUSH2 0x2536 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x884 JUMPI INVALID JUMPDEST PUSH2 0x2552 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4DDD JUMP JUMPDEST DUP6 MLOAD PUSH1 0x0 SWAP1 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x2563 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x2577 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP7 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x25C5 JUMPI PUSH2 0x2594 DUP2 PUSH2 0x3286 JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x25A0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x2680 JUMP JUMPDEST PUSH2 0x25CE DUP2 PUSH2 0x3289 JUMP JUMPDEST PUSH2 0x265B JUMPI PUSH2 0x25DB DUP2 PUSH2 0x3286 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2606 SWAP2 SWAP1 PUSH2 0x4854 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x261E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2632 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2656 SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST PUSH2 0x2667 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2673 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x251F JUMP JUMPDEST POP DUP5 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x2720 JUMPI PUSH2 0x269C PUSH2 0x1C98 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP8 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x26C9 SWAP3 SWAP2 SWAP1 PUSH2 0x488C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x271D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3ED6 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x272E DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x3296 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x273B PUSH2 0x1C98 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8BDB3913 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x276C SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4BC0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2786 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x279A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x60 SWAP3 POP DUP6 SWAP2 POP POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x27B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x27E3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP6 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x2880 JUMPI PUSH2 0x27F8 PUSH2 0x1C98 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP9 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2825 SWAP3 SWAP2 SWAP1 PUSH2 0x488C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x283D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2851 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2879 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3ED6 JUMP JUMPDEST SWAP1 POP PUSH2 0x297E JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x297C JUMPI DUP7 MLOAD PUSH1 0x0 SWAP1 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x289C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x28B0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x28C3 DUP2 PUSH2 0x3289 JUMP JUMPDEST PUSH2 0x2950 JUMPI PUSH2 0x28D0 DUP2 PUSH2 0x3286 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x28FB SWAP2 SWAP1 PUSH2 0x4854 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2913 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2927 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x294B SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST PUSH2 0x295C JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2968 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x2883 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1C8B JUMPI PUSH2 0x29DB DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x2998 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8F9 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x29B1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x29C5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3270 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2981 JUMP JUMPDEST PUSH2 0x29EC DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x29FD JUMPI PUSH2 0x29FA DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x2A60 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x2A35 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x2A60 DUP5 PUSH32 0x0 DUP5 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDE0E9A3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xDE0E9A3E SWAP1 PUSH2 0x2AC8 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2AF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2B1A SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0xBF3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0xB9F SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH2 0x2B9C DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x2BAD JUMPI PUSH2 0x2BAA DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A 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 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2C20 SWAP2 SWAP1 PUSH2 0x3C24 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x2C65 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x2C5A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x2C65 DUP6 DUP3 DUP6 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH2 0x2CAC SWAP1 DUP10 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CDA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2CFE SWAP2 SWAP1 PUSH2 0x3F11 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0xB6B55F2500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xB6B55F25 SWAP1 PUSH2 0x2D44 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E9F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D72 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x2DBE SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4854 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DEA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x2E0E SWAP2 SWAP1 PUSH2 0x45D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x23F9 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x49B4 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2EEC JUMPI CALLER DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x2E70 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xA0 MUL ADD PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2E88 SWAP2 SWAP1 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2EC8 JUMPI POP ADDRESS DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x2EA5 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xA0 MUL ADD PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2EBD SWAP2 SWAP1 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x2EE4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2E5B JUMP JUMPDEST POP PUSH2 0x2EF5 PUSH2 0x1C98 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2F23 SWAP3 SWAP2 SWAP1 PUSH2 0x4A7C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2F59 DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x2F6A JUMPI PUSH2 0x2F67 DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x2FAD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x2FA2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75F SWAP1 PUSH2 0x4D6F JUMP JUMPDEST PUSH2 0x2FAD DUP5 DUP7 DUP5 PUSH2 0x3128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBA08765200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xBA087652 SWAP1 PUSH2 0x12D0 SWAP1 DUP7 SWAP1 DUP9 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4EBF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3004 DUP3 PUSH2 0x32BD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 DUP3 AND EQ JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3064 DUP5 PUSH2 0x32BD JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3071 DUP5 PUSH2 0x32D4 JUMP JUMPDEST ISZERO PUSH2 0x3004 JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3090 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x331B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x30A9 SWAP1 PUSH2 0x3286 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x30E6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x30EB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x21BA DUP2 PUSH2 0x1A4 PUSH2 0x331B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3106 DUP4 PUSH2 0x3329 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SGT PUSH2 0x3120 JUMPI DUP2 PUSH1 0x0 SUB PUSH2 0x3122 JUMP JUMPDEST DUP2 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH2 0x3132 JUMPI PUSH2 0x21BA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3162 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x31AD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0xC0B DUP6 DUP4 DUP4 PUSH2 0x3387 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x31E2 SWAP2 SWAP1 PUSH2 0x4805 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x321F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3224 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3233 DUP3 DUP3 PUSH2 0x34C1 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 DUP1 ISZERO PUSH2 0x324F JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3265 JUMPI PUSH2 0x325E DUP3 PUSH2 0x34EB JUMP JUMPDEST SWAP1 POP PUSH2 0x3122 JUMP JUMPDEST PUSH2 0x3122 PUSH2 0x136 PUSH2 0x3528 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3280 DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x331B JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 DUP1 ISZERO PUSH2 0x32A3 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x32B2 JUMPI PUSH2 0x325E DUP3 PUSH2 0x3555 JUMP JUMPDEST PUSH2 0x3122 PUSH2 0x150 PUSH2 0x3528 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x32C9 DUP4 PUSH2 0x3329 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x21C9 JUMPI PUSH2 0x21C9 DUP2 PUSH2 0x3528 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x3336 DUP4 PUSH2 0x359E JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3368 SWAP3 SWAP2 SWAP1 PUSH2 0x4846 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x33A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x33DB JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x33C8 PUSH2 0x37EC JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x33C0 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x3473 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3409 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x342B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3460 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x33E1 JUMP JUMPDEST POP PUSH2 0x347C PUSH2 0x1C98 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x34A7 SWAP2 SWAP1 PUSH2 0x4B2A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x34D0 JUMPI POP DUP1 PUSH2 0x3122 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x34E0 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x3122 PUSH2 0x1AE PUSH2 0x3528 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x34F8 DUP4 PUSH2 0x35C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3508 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x351F JUMPI PUSH2 0x3517 DUP4 PUSH2 0x35D7 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3051 JUMP JUMPDEST DUP3 SWAP2 POP POP PUSH2 0x3051 JUMP JUMPDEST PUSH2 0x3552 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x3685 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x3562 DUP4 PUSH2 0x35C1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3572 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3581 JUMPI PUSH2 0x3517 DUP4 PUSH2 0x36E6 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x358F JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x351F JUMPI PUSH2 0x3517 DUP4 PUSH2 0x3749 JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3122 SWAP2 SWAP1 PUSH2 0x42FA JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x35E5 DUP5 PUSH2 0x379C JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x364B JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3604 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3617 DUP2 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x3642 JUMPI PUSH2 0x3625 DUP2 PUSH2 0x3056 JUMP JUMPDEST DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3631 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 SWAP3 POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x35ED JUMP JUMPDEST POP DUP1 PUSH2 0x3657 JUMPI DUP5 PUSH2 0x3233 JUMP JUMPDEST PUSH1 0x1 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x366D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C34 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x36F4 DUP5 PUSH2 0x37BF JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3701 DUP3 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x373F JUMPI PUSH2 0x370F DUP3 PUSH2 0x3056 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3727 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4C13 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x3051 JUMP JUMPDEST DUP4 SWAP3 POP POP POP PUSH2 0x3051 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x3756 DUP4 PUSH2 0x37D6 JUMP JUMPDEST SWAP1 POP PUSH2 0x3761 DUP2 PUSH2 0x300B JUMP JUMPDEST ISZERO PUSH2 0x351F JUMPI PUSH2 0x376F DUP2 PUSH2 0x3056 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3785 SWAP3 SWAP2 SWAP1 PUSH2 0x4BFC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x3051 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x37B4 SWAP2 SWAP1 PUSH2 0x4379 JUMP JUMPDEST SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x37B4 SWAP2 SWAP1 PUSH2 0x4343 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3004 SWAP2 SWAP1 PUSH2 0x4316 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3122 DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3838 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x384F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x3869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3880 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3893 PUSH2 0x388E DUP3 PUSH2 0x4F05 JUMP JUMPDEST PUSH2 0x4EDE JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x38B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x38DC JUMPI DUP2 CALLDATALOAD PUSH2 0x38CA DUP2 PUSH2 0x4F72 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x38B7 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x38F7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3905 PUSH2 0x388E DUP3 PUSH2 0x4F05 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x38DC JUMPI DUP2 CALLDATALOAD DUP8 ADD PUSH1 0xA0 DUP1 PUSH1 0x1F NOT DUP4 DUP13 SUB ADD SLT ISZERO PUSH2 0x3937 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3940 DUP2 PUSH2 0x4EDE JUMP JUMPDEST DUP6 DUP4 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 ADD CALLDATALOAD DUP8 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP6 ADD CALLDATALOAD DUP3 DUP5 ADD MSTORE PUSH1 0x80 SWAP2 POP DUP2 DUP6 ADD CALLDATALOAD DUP2 DUP5 ADD MSTORE POP DUP3 DUP5 ADD CALLDATALOAD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x3982 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3990 DUP13 DUP9 DUP6 DUP8 ADD ADD PUSH2 0x3AB2 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP7 MSTORE POP POP SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3916 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x39B9 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x39D0 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0x40 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x3869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x39FB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3A09 PUSH2 0x388E DUP3 PUSH2 0x4F05 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x3A2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x38DC JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3A2D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3A59 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3A67 PUSH2 0x388E DUP3 PUSH2 0x4F05 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x3A88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x38DC JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3A8B JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3122 DUP2 PUSH2 0x4F87 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3AC2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3AD8 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3AEB PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x4EDE JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3B02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 DUP2 LT PUSH2 0x3122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x3122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3B4A JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x3B54 PUSH1 0x80 PUSH2 0x4EDE JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3B6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3B7A DUP6 DUP4 DUP7 ADD PUSH2 0x3870 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3B90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3B9C DUP6 DUP4 DUP7 ADD PUSH2 0x39EB JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3BB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BC2 DUP5 DUP3 DUP6 ADD PUSH2 0x3AB2 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0x3BD5 DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0x3AA7 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3BF1 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C19 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3004 DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C35 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3004 DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3C55 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3C60 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3C70 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3C9A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3CA5 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3CB5 DUP2 PUSH2 0x4F87 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3CD1 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3CE4 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3CF2 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3D03 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3D26 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3D31 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3D5A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3D70 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3D7C DUP7 DUP3 DUP8 ADD PUSH2 0x3827 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP PUSH1 0x20 SWAP6 SWAP1 SWAP6 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DA2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3DB8 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3DC4 DUP6 DUP3 DUP7 ADD PUSH2 0x3827 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DE2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3DF8 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x3E08 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x3E16 PUSH2 0x388E DUP3 PUSH2 0x4F05 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x3E32 JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x3E54 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x3E36 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3E74 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3E8B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E9E JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3EAC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP8 PUSH1 0x20 PUSH1 0xA0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x3EC0 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP9 SWAP1 SWAP8 POP SWAP6 SWAP1 SWAP2 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EE7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3EFD JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3F09 DUP5 DUP3 DUP6 ADD PUSH2 0x3A49 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F22 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3004 DUP2 PUSH2 0x4F87 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3F45 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3F50 DUP2 PUSH2 0x4F87 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x3F60 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x3F76 DUP9 PUSH1 0x60 DUP10 ADD PUSH2 0x3BF7 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3FAA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH2 0x3FBB DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0x3B1B JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x3FCB DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x3FDB DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3FF7 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x4003 DUP12 DUP4 DUP13 ADD PUSH2 0x3B39 JUMP JUMPDEST SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4018 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x4025 DUP11 DUP3 DUP12 ADD PUSH2 0x39A8 JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4052 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH2 0x4063 DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0x3B1B JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x4073 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x4083 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x409E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x40AA DUP11 DUP3 DUP12 ADD PUSH2 0x3B39 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x40E3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x40EE DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x40FE DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH2 0x411C DUP2 PUSH2 0x4F87 JUMP JUMPDEST SWAP4 POP PUSH2 0x412B DUP11 PUSH1 0xA0 DUP12 ADD PUSH2 0x3BF7 JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4162 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x416D DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x417D DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0x419A DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0x3BF7 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41C8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x41D3 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x41F8 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4203 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x4213 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x4223 DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4250 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x425B DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x426B DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x427B DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x42A3 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x42AE DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x42BE DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x42CE DUP2 PUSH2 0x4F72 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x42E5 DUP2 PUSH2 0x4F87 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x430B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3004 DUP2 PUSH2 0x4F95 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4328 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4333 DUP2 PUSH2 0x4F95 JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4357 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x4362 DUP2 PUSH2 0x4F95 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD SWAP1 SWAP7 SWAP5 SWAP6 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x438D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x4398 DUP2 PUSH2 0x4F95 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x43B4 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x43C0 DUP7 DUP3 DUP8 ADD PUSH2 0x3A49 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x43F2 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x43FC DUP14 DUP14 PUSH2 0x3B2A JUMP JUMPDEST SWAP11 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 PUSH1 0x20 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x4417 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4427 DUP15 PUSH1 0x20 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x38E7 JUMP JUMPDEST SWAP11 POP DUP1 PUSH1 0x40 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x4439 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4449 DUP15 PUSH1 0x40 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x3827 JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH2 0x445B DUP15 PUSH1 0x60 DUP16 ADD PUSH2 0x3BE0 JUMP JUMPDEST SWAP8 POP DUP1 PUSH1 0xE0 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x446D JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x447D DUP15 PUSH1 0xE0 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x3827 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP5 POP PUSH2 0x120 DUP14 ADD CALLDATALOAD SWAP4 POP PUSH2 0x140 DUP14 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x44A3 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x44B5 DUP14 PUSH2 0x140 DUP15 ADD CALLDATALOAD DUP15 ADD PUSH2 0x39A8 JUMP JUMPDEST DUP2 SWAP4 POP DUP1 SWAP3 POP POP POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x44E6 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x44FD JUMPI DUP6 DUP7 REVERT JUMPDEST SWAP1 DUP9 ADD SWAP1 PUSH1 0xC0 DUP3 DUP12 SUB SLT ISZERO PUSH2 0x4510 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x451A PUSH1 0xC0 PUSH2 0x4EDE JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH2 0x452B DUP12 PUSH1 0x20 DUP6 ADD PUSH2 0x3B2A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x453E DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x4550 DUP12 PUSH1 0x60 DUP6 ADD PUSH2 0x381C JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x4570 JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH2 0x457C DUP13 DUP3 DUP7 ADD PUSH2 0x3AB2 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP DUP1 SWAP9 POP POP POP POP PUSH2 0x4595 DUP9 PUSH1 0x20 DUP10 ADD PUSH2 0x3BE0 JUMP JUMPDEST SWAP6 SWAP9 SWAP6 SWAP8 POP POP POP POP PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP4 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP4 PUSH1 0xE0 DUP3 ADD CALLDATALOAD SWAP4 POP PUSH2 0x100 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45CC JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45E4 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x45FD JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x461E JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x4679 JUMPI DUP2 CALLDATALOAD PUSH2 0x465E DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x464B JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x4679 JUMPI DUP2 CALLDATALOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4693 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4679 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x46C2 JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x46FC DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4F32 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0xA0 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4755 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4730 JUMP JUMPDEST POP POP DUP3 DUP6 ADD MLOAD SWAP2 POP DUP6 DUP2 SUB DUP4 DUP8 ADD MSTORE PUSH2 0x476E DUP2 DUP4 PUSH2 0x46AF JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x4789 DUP3 DUP3 PUSH2 0x46E4 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x479E PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x46DE JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x47B1 DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x47CD DUP3 PUSH2 0x4F87 JUMP JUMPDEST SWAP1 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x47E4 DUP3 PUSH2 0x4F72 JUMP JUMPDEST AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD CALLDATALOAD PUSH2 0x47F8 DUP2 PUSH2 0x4F87 JUMP JUMPDEST DUP1 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4817 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x4F32 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x4833 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x4F32 JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND DUP5 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP7 ADD MSTORE DUP3 DUP7 MLOAD DUP1 DUP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP2 POP DUP3 DUP9 ADD SWAP5 POP DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x48D8 JUMPI DUP6 MLOAD DUP6 AND DUP4 MSTORE SWAP5 DUP4 ADD SWAP5 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x48BA JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE SWAP7 SWAP1 SWAP8 AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE ISZERO ISZERO PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 ISZERO ISZERO PUSH1 0x20 DUP8 ADD MSTORE SWAP4 SWAP1 SWAP6 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 DUP5 PUSH1 0x60 DUP4 ADD DUP3 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x4A5F JUMPI PUSH1 0x20 DUP4 CALLDATALOAD PUSH2 0x4A44 DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4A2F JUMP JUMPDEST POP DUP1 SWAP3 POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x40 DUP1 DUP5 ADD DUP7 DUP5 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x4B1D JUMPI DUP2 CALLDATALOAD PUSH2 0x4AA5 DUP2 PUSH2 0x4F95 JUMP JUMPDEST PUSH2 0x4AAE DUP2 PUSH2 0x4F5E JUMP JUMPDEST DUP4 MSTORE DUP2 DUP6 ADD CALLDATALOAD PUSH2 0x4ABD DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP7 ADD MSTORE DUP2 DUP5 ADD CALLDATALOAD DUP5 DUP5 ADD MSTORE PUSH1 0x60 PUSH2 0x4AE0 DUP2 DUP5 ADD DUP5 PUSH2 0x4F25 JUMP JUMPDEST PUSH2 0x4AEC DUP3 DUP7 ADD DUP3 PUSH2 0x462F JUMP JUMPDEST POP POP PUSH1 0x80 PUSH2 0x4AFC DUP2 DUP5 ADD DUP5 PUSH2 0x4F25 JUMP JUMPDEST PUSH2 0x4B08 DUP3 DUP7 ADD DUP3 PUSH2 0x462F JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4A92 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4BB3 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH2 0x4B5C DUP2 PUSH2 0x4F5E JUMP JUMPDEST DUP6 MSTORE DUP1 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP7 ADD MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP7 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD PUSH2 0x4B89 DUP3 DUP9 ADD DUP3 PUSH2 0x462F JUMP JUMPDEST POP POP PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 PUSH2 0x4B9E DUP7 DUP3 ADD DUP4 PUSH2 0x462F JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP4 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4B47 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x4BF2 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4710 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4C09 DUP5 PUSH2 0x4F5E JUMP JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4C20 DUP6 PUSH2 0x4F5E JUMP JUMPDEST SWAP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C3F DUP6 PUSH2 0x4F5E JUMP JUMPDEST DUP5 DUP3 MSTORE PUSH1 0x60 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4C56 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x46AF JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP1 DUP4 ADD PUSH2 0x4C77 DUP13 PUSH2 0x4F68 JUMP JUMPDEST DUP12 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD SWAP1 DUP2 SWAP1 MSTORE PUSH2 0x140 DUP1 DUP6 ADD SWAP3 DUP3 DUP2 MUL DUP7 ADD SWAP1 SWAP2 ADD SWAP2 DUP13 DUP3 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4D1E JUMPI DUP8 DUP6 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC0 ADD DUP7 MSTORE DUP2 MLOAD DUP1 MLOAD DUP7 MSTORE DUP5 DUP2 ADD MLOAD DUP6 DUP8 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD PUSH1 0xA0 SWAP2 DUP8 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x4D0A DUP2 DUP9 ADD DUP4 PUSH2 0x46E4 JUMP JUMPDEST SWAP8 DUP7 ADD SWAP8 SWAP7 POP POP POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4C9E JUMP JUMPDEST POP POP POP POP DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x4D35 DUP2 DUP11 DUP13 PUSH2 0x463C JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4D45 PUSH1 0x60 DUP5 ADD DUP9 PUSH2 0x47A6 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x4D58 DUP2 DUP7 DUP9 PUSH2 0x4684 JUMP JUMPDEST SWAP2 POP POP DUP3 PUSH2 0x100 DUP4 ADD MSTORE SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742073656E64657200000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x696E76616C696420636861696E6564207265666572656E636500000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 MSTORE DUP6 MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x4E2F DUP2 PUSH2 0x4F68 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x60 DUP8 ADD MLOAD AND PUSH2 0x140 DUP4 ADD MSTORE PUSH1 0x80 DUP7 ADD MLOAD PUSH2 0x160 DUP4 ADD MSTORE PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 PUSH2 0x180 DUP5 ADD MSTORE PUSH2 0x4E7D PUSH2 0x1A0 DUP5 ADD DUP3 PUSH2 0x46E4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4E8D PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x47A6 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4EFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4F1B JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x3004 DUP2 PUSH2 0x4F72 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4F4D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4F35 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x51C JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x3552 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x3552 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x3552 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH2 0x3CF1 0xBE DUP7 DUP3 0xD8 0xC5 INVALID 0xBE 0x4A 0xDC SAR 0xC3 SAR LOG0 PUSH10 0xA8A2C03E12655D24D3E6 MULMOD 0xD 0xF8 0x5D CALL PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"828:525:80:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4183:241:71;;;;;;:::i;:::-;;:::i;:::-;;4322:1140:73;;;;;;:::i;:::-;;:::i;2424:1525:76:-;;;;;;:::i;:::-;;:::i;1851:934:73:-;;;;;;:::i;:::-;;:::i;3774:542::-;;;;;;:::i;:::-;;:::i;1715:703:76:-;;;;;;:::i;:::-;;:::i;3575:302:71:-;;;;;;:::i;:::-;;:::i;1329:1260:67:-;;;;;;:::i;:::-;;:::i;1218:133:80:-;;;;;;;;;;-1:-1:-1;1218:133:80;;;;;:::i;:::-;;:::i;3329:873:75:-;;;;;;:::i;:::-;;:::i;2472:1097:71:-;;;;;;:::i;:::-;;:::i;1298:951:70:-;;;;;;:::i;:::-;;:::i;2595:1004:67:-;;;;;;:::i;:::-;;:::i;1630:836:71:-;;;;;;:::i;:::-;;:::i;2220:99:69:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2433:466;;;;;;:::i;:::-;;:::i;3883:294:71:-;;;;;;:::i;:::-;;:::i;1328:280:77:-;;;;;;:::i;:::-;;:::i;2126:88:69:-;;;;;;;;;;;;;:::i;4320:1496:76:-;;;;;;:::i;:::-;;:::i;1614:315:77:-;;;;;;:::i;:::-;;:::i;2030:1001:75:-;;;;;;:::i;:::-;;:::i;3077:273:69:-;;;;;;;;;;-1:-1:-1;3077:273:69;;;;;:::i;:::-;;:::i;1089:123:80:-;;;;;;;;;;-1:-1:-1;1089:123:80;;;;;:::i;:::-;;:::i;1278:1221:74:-;;;;;;:::i;:::-;;:::i;7560:2544:76:-;;;;;;:::i;:::-;;:::i;2791:977:73:-;;;;;;:::i;:::-;;:::i;2505:1310:74:-;;;;;;:::i;:::-;;:::i;3955:327:76:-;;;;;;:::i;:::-;;:::i;2255:853:70:-;;;;;;:::i;:::-;;:::i;3525:153:69:-;;;;;;;;;;-1:-1:-1;3525:153:69;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4183:241:71:-;4299:6;4279:17;4322:96;4342:9;4338:1;:13;4322:96;;;4372:6;;4379:1;4372:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4372:23:71;;4396:10;4372:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4353:3;;;;;4322:96;;;;4183:241;;;:::o;4322:1140:73:-;4468:27;4488:6;4468:19;:27::i;:::-;4464:100;;;4520:33;4546:6;4520:25;:33::i;:::-;4511:42;;4464:100;4701:32;;;;;4684:14;;-1:-1:-1;;;;;4701:7:73;:24;;;;:32;;4726:6;;4701:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4684:49;-1:-1:-1;5183:43:73;-1:-1:-1;;;;;5199:7:73;5183:35;5219:6;5183:35;:43::i;:::-;-1:-1:-1;;;;;5241:26:73;;5262:4;5241:26;5237:92;;5283:35;;;;;-1:-1:-1;;;;;5283:7:73;:16;;;;:35;;5300:9;;5311:6;;5283:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5237:92;5343:36;5363:15;5343:19;:36::i;:::-;5339:117;;;5395:50;5421:15;5438:6;5395:25;:50::i;2424:1525:76:-;2791:10;2775:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;2775:26:76;;:59;;;-1:-1:-1;2829:4:76;2805:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;2805:29:76;;2775:59;2767:88;;;;-1:-1:-1;;;2767:88:76;;;;;;;:::i;:::-;;;;;;;;;2871:9;2866:230;2890:5;:12;2886:1;:16;2866:230;;;2923:14;2940:5;2946:1;2940:8;;;;;;;;;;;;;;:15;;;2923:32;;2973:27;2993:6;2973:19;:27::i;:::-;2969:117;;;3038:33;3064:6;3038:25;:33::i;:::-;3020:5;3026:1;3020:8;;;;;;;;;;;;;;:15;;:51;;;;;2969:117;-1:-1:-1;2904:3:76;;2866:230;;;;3106:23;3132:10;:8;:10::i;:::-;-1:-1:-1;;;;;3132:20:76;;3161:5;3169:4;3175:5;3182:6;;3190:5;3197:6;;3205:8;3132:82;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3132:82:76;;;;;;;;;;;;:::i;:::-;3106:108;;3230:9;3225:718;3245:27;;;3225:718;;;3301:44;3321:16;;3338:1;3321:19;;;;;;;;;;;;:23;;;3301:19;:44::i;:::-;3293:82;;;;-1:-1:-1;;;3293:82:76;;;;;;;:::i;:::-;3836:96;3862:16;;3879:1;3862:19;;;;;;;;;;;;:23;;;3887:44;3896:7;3904:16;;3921:1;3904:19;;;;;;;;;;;;:25;;;3896:34;;;;;;;;;;;;;;3887:8;:44::i;:::-;3836:25;:96::i;:::-;3274:3;;3225:718;;;;2424:1525;;;;;;;;;;;;:::o;1851:934:73:-;2015:27;2035:6;2015:19;:27::i;:::-;2011:100;;;2067:33;2093:6;2067:25;:33::i;:::-;2058:42;;2011:100;-1:-1:-1;;;;;2296:23:73;;2314:4;2296:23;2292:151;;-1:-1:-1;;;;;2343:20:73;;2353:10;2343:20;2335:49;;;;-1:-1:-1;;;2335:49:73;;;;;;;:::i;:::-;2398:34;2409:6;2417;2425;2398:10;:34::i;:::-;2453:40;;;;;-1:-1:-1;;;;;2453:6:73;:14;;;;:40;;2476:7;;2486:6;;2453:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2520:29:73;;;;;2503:14;;-1:-1:-1;;;;;2528:7:73;2520:21;;;;:29;;2542:6;;2520:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2503:46;-1:-1:-1;;;;;;2564:26:73;;2585:4;2564:26;2560:92;;2606:35;;;;;-1:-1:-1;;;;;2606:7:73;:16;;;;:35;;2623:9;;2634:6;;2606:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2560:92;2666:36;2686:15;2666:19;:36::i;:::-;2662:117;;;2718:50;2744:15;2761:6;2718:25;:50::i;:::-;1851:934;;;;;:::o;3774:542::-;3913:27;3933:6;3913:19;:27::i;:::-;3909:100;;;3965:33;3991:6;3965:25;:33::i;:::-;3956:42;;3909:100;4019:14;4036:6;-1:-1:-1;;;;;4036:13:73;;4058:6;4075:4;4036:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4019:62;-1:-1:-1;;;;;;4096:26:73;;4117:4;4096:26;4092:91;;4138:34;;;;;-1:-1:-1;;;;;4138:6:73;:15;;;;:34;;4154:9;;4165:6;;4138:34;;;:::i;1715:703:76:-;1982:10;1966:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;1966:26:76;;:59;;;-1:-1:-1;2020:4:76;1996:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;1996:29:76;;1966:59;1958:88;;;;-1:-1:-1;;;1958:88:76;;;;;;;:::i;:::-;2061:38;2081:10;:17;;;2061:19;:38::i;:::-;2057:133;;;2135:44;2161:10;:17;;;2135:25;:44::i;:::-;2115:17;;;:64;2057:133;2200:14;2217:10;:8;:10::i;:::-;-1:-1:-1;;;;;2217:15:76;;2241:5;2249:10;2261:5;2268;2275:8;2217:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2200:84;;2299:36;2319:15;2299:19;:36::i;:::-;2295:117;;;2351:50;2377:15;2394:6;2351:25;:50::i;:::-;1715:703;;;;;;;:::o;3575:302:71:-;3693:47;;;;;3673:17;;-1:-1:-1;;;;;3693:15:71;:27;;;;:47;;3721:6;;;;3729:10;;3693:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3673:67;;3755:36;3775:15;3755:19;:36::i;1329:1260:67:-;1570:27;1590:6;1570:19;:27::i;:::-;1566:100;;;1622:33;1648:6;1622:25;:33::i;:::-;1613:42;;1566:100;1848:19;1870:14;:59;;1909:11;-1:-1:-1;;;;;1909:18:67;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1870:59;;;1887:11;-1:-1:-1;;;;;1887:17:67;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1848:81;-1:-1:-1;;;;;;2119:23:67;;2137:4;2119:23;2115:157;;-1:-1:-1;;;;;2166:20:67;;2176:10;2166:20;2158:49;;;;-1:-1:-1;;;2158:49:67;;;;;;;:::i;:::-;2221:40;2232:6;2240:12;2254:6;2221:10;:40::i;:::-;2282:50;;;;;-1:-1:-1;;;;;2282:20:67;;;;;:50;;2311:11;;2325:6;;2282:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2398:57:67;;;;;2381:14;;-1:-1:-1;;;;;2398:19:67;;;;;:57;;2418:9;;2429:6;;2381:14;;2440;;2398:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2381:74;;2470:36;2490:15;2470:19;:36::i;:::-;2466:117;;;2522:50;2548:15;2565:6;2522:25;:50::i;:::-;1329:1260;;;;;;;;:::o;1218:133:80:-;1287:57;1313:30;1339:3;1313:25;:30::i;:::-;1287:57;;;;;;:::i;:::-;;;;;;;;1218:133;:::o;3329:873:75:-;3540:27;3560:6;3540:19;:27::i;:::-;3536:100;;;3592:33;3618:6;3592:25;:33::i;:::-;3583:42;;3536:100;-1:-1:-1;;;;;3830:23:75;;3848:4;3830:23;3826:157;;-1:-1:-1;;;;;3877:20:75;;3887:10;3877:20;3869:49;;;;-1:-1:-1;;;3869:49:75;;;;;;;:::i;:::-;3932:40;3943:6;3951:12;3965:6;3932:10;:40::i;:::-;4020:38;;;;;3993:24;;-1:-1:-1;;;;;4020:19:75;;;;;:38;;4040:9;;4051:6;;4020:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3993:65;;4073:36;4093:15;4073:19;:36::i;:::-;4069:127;;;4125:60;4151:15;4168:16;4125:25;:60::i;:::-;3329:873;;;;;;:::o;2472:1097:71:-;2645:27;2665:6;2645:19;:27::i;:::-;2641:100;;;2697:33;2723:6;2697:25;:33::i;:::-;2688:42;;2641:100;-1:-1:-1;;;;;2932:23:71;;2950:4;2932:23;2928:158;;-1:-1:-1;;;;;2979:20:71;;2989:10;2979:20;2971:49;;;;-1:-1:-1;;;2971:49:71;;;;;;;:::i;:::-;3034:41;3045:6;3060:5;3068:6;3034:10;:41::i;:::-;3203:22;;;;;-1:-1:-1;;;;;3203:14:71;;;;;:22;;3218:6;;3203:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;3425:26:71;;3446:4;3425:26;3421:142;;3467:15;3485:5;-1:-1:-1;;;;;3485:14:71;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3516:36;;;;;3467:34;;-1:-1:-1;;;;;;3516:17:71;;;;;:36;;3534:9;;3545:6;;3516:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1298:951:70:-;1495:27;1515:6;1495:19;:27::i;:::-;1491:100;;;1547:33;1573:6;1547:25;:33::i;:::-;1538:42;;1491:100;1601:17;1628:12;-1:-1:-1;;;;;1628:18:70;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1601:48;-1:-1:-1;;;;;;1839:23:70;;1857:4;1839:23;1835:155;;-1:-1:-1;;;;;1886:20:70;;1896:10;1886:20;1878:49;;;;-1:-1:-1;;;1878:49:70;;;;;;;:::i;:::-;1941:38;1952:6;1960:10;1972:6;1941:10;:38::i;:::-;2000:49;;;;;-1:-1:-1;;;;;2000:18:70;;;;;:49;;2027:12;;2042:6;;2000:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2076:39:70;;;;;2059:14;;-1:-1:-1;;;;;2076:20:70;;;;;:39;;2097:6;;2105:9;;2076:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2059:56;;2130:36;2150:15;2130:19;:36::i;:::-;2126:117;;;2182:50;2208:15;2225:6;2182:25;:50::i;2595:1004:67:-;2835:27;2855:6;2835:19;:27::i;:::-;2831:100;;;2887:33;2913:6;2887:25;:33::i;:::-;2878:42;;2831:100;-1:-1:-1;;;;;3122:23:67;;3140:4;3122:23;3118:156;;-1:-1:-1;;;;;3169:20:67;;3179:10;3169:20;3161:49;;;;-1:-1:-1;;;3161:49:67;;;;;;;:::i;:::-;3224:39;3235:6;3243:11;3256:6;3224:10;:39::i;:::-;3412:53;;;;;3394:14;;-1:-1:-1;;;;;3412:20:67;;;;;:53;;3433:9;;3444:6;;3452:12;;3412:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3391:74;;;3480:36;3500:15;3480:19;:36::i;1630:836:71:-;1802:27;1822:6;1802:19;:27::i;:::-;1798:100;;;1854:33;1880:6;1854:25;:33::i;:::-;1845:42;;1798:100;1991:15;2009:5;-1:-1:-1;;;;;2009:14:71;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1991:34;-1:-1:-1;;;;;;2218:23:71;;2236:4;2218:23;2214:153;;-1:-1:-1;;;;;2265:20:71;;2275:10;2265:20;2257:49;;;;-1:-1:-1;;;2257:49:71;;;;;;;:::i;:::-;2320:36;2331:6;2339:8;2349:6;2320:10;:36::i;:::-;2377:40;;;;;-1:-1:-1;;;;;2377:16:71;;;;;:40;;2402:5;;2410:6;;2377:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2427:32:71;;;;;-1:-1:-1;;;;;2427:13:71;;;;;:32;;2441:6;;2449:9;;2427:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1630:836;;;;;:::o;2220:99:69:-;2301:11;2220:99;:::o;2433:466::-;-1:-1:-1;;;;;2588:24:69;;2607:4;2588:24;;:37;;;2617:8;2616:9;2588:37;2580:81;;;;-1:-1:-1;;;2580:81:69;;;;;;;:::i;:::-;2671:17;2744:34;;;2780:10;2792:7;2801:8;2721:89;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2721:89:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;2691:156;;;2824:13;;;;2691:156;;:::i;:::-;;;;-1:-1:-1;;2691:156:69;;;;;;;;;;-1:-1:-1;2858:34:69;-1:-1:-1;;;;;2866:6:69;2858:28;2691:156;2858:28;:34::i;3883:294:71:-;4074:96;;;;;-1:-1:-1;;;;;4074:15:71;:46;;;;:96;;4129:4;;4136:8;;4146:4;;4152:8;;4162:1;;4165;;4168;;4074:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3883:294;;;;;;:::o;1328:280:77:-;1535:5;-1:-1:-1;;;;;1535:12:77;;1548:5;1563:10;:8;:10::i;:::-;1576:5;1583:8;1593:1;1596;1599;1535:66;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1328:280;;;;;;;:::o;2126:88:69:-;2201:6;2126:88;:::o;4320:1496:76:-;-1:-1:-1;;;;;4580:20:76;;4590:10;4580:20;;:47;;-1:-1:-1;;;;;;4604:23:76;;4622:4;4604:23;4580:47;4572:76;;;;-1:-1:-1;;;4572:76:76;;;;;;;:::i;:::-;4969:10;4989:34;5016:6;4989:26;:34::i;:::-;4969:55;;5034:32;5069:36;5089:15;5069:19;:36::i;:::-;:67;;5135:1;5069:67;;;5108:24;;;;;-1:-1:-1;;;;;5108:13:76;;;;;:24;;5122:9;;5108:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5034:102;;5166:63;5206:4;5212:7;:16;;;5166:39;:63::i;:::-;5147:16;;;:82;5240:10;:8;:10::i;:::-;-1:-1:-1;;;;;5240:19:76;;5268:5;5276:6;5284;5292:9;5303:7;5240:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5326:36;5346:15;5326:19;:36::i;:::-;5322:488;;;5670:24;;;;;5642:25;;-1:-1:-1;;;;;5670:13:76;;;;;:24;;5684:9;;5670:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5642:52;-1:-1:-1;5708:91:76;5734:15;5751:47;5642:52;5773:24;5751:21;:47::i;1614:315:77:-;1848:5;-1:-1:-1;;;;;1848:12:77;;1861:6;1877:10;:8;:10::i;:::-;1890:5;1897:6;1905:7;1914:1;1917;1920;1848:74;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1614:315;;;;;;;;:::o;2030:1001:75:-;2240:28;2260:7;2240:19;:28::i;:::-;2236:103;;;2294:34;2320:7;2294:25;:34::i;:::-;2284:44;;2236:103;2349:22;2381:12;-1:-1:-1;;;;;2381:23:75;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2349:58;-1:-1:-1;;;;;;2597:23:75;;2615:4;2597:23;2593:161;;-1:-1:-1;;;;;2644:20:75;;2654:10;2644:20;2636:49;;;;-1:-1:-1;;;2636:49:75;;;;;;;:::i;:::-;2699:44;2710:6;2718:15;2735:7;2699:10;:44::i;:::-;2764:55;;;;;-1:-1:-1;;;;;2764:23:75;;;;;:55;;2796:12;;2811:7;;2764:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2850:43:75;;;;;2829:18;;-1:-1:-1;;;;;2850:23:75;;;;;:43;;2874:9;;2885:7;;2850:43;;;:::i;3077:273:69:-;3159:27;3179:6;3159:19;:27::i;:::-;3155:100;;;3211:33;3237:6;3211:25;:33::i;:::-;3202:42;;3155:100;3301:5;-1:-1:-1;;;;;3301:13:69;;3323:10;:8;:10::i;:::-;3336:6;3301:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3077:273;;:::o;1089:123:80:-;1168:37;1194:3;1199:5;1168:25;:37::i;:::-;1089:123;;:::o;1278:1221:74:-;1493:27;1513:6;1493:19;:27::i;:::-;1489:100;;;1545:33;1571:6;1545:25;:33::i;:::-;1536:42;;1489:100;-1:-1:-1;;;;;1780:23:74;;1798:4;1780:23;1776:155;;-1:-1:-1;;;;;1827:20:74;;1837:10;1827:20;1819:49;;;;-1:-1:-1;;;1819:49:74;;;;;;;:::i;:::-;1882:38;1893:6;1901:10;1913:6;1882:10;:38::i;:::-;1941:22;1973:10;-1:-1:-1;;;;;1973:16:74;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2067:27;;;;;1941:51;;-1:-1:-1;;;;;;2067:19:74;;;;;:27;;2087:6;;2067:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2209:40:74;;;;;2183:23;;-1:-1:-1;;;;;;2209:25:74;;;-1:-1:-1;2209:25:74;;:40;;2243:4;;2209:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2304:52;;;;;2183:66;;-1:-1:-1;;;;;;2304:24:74;;;;;:52;;2329:9;;2183:66;;2304:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2371:36;2391:15;2371:19;:36::i;7560:2544:76:-;-1:-1:-1;;;;;7825:20:76;;7835:10;7825:20;;:47;;-1:-1:-1;;;;;;7849:23:76;;7867:4;7849:23;7825:47;7817:76;;;;-1:-1:-1;;;7817:76:76;;;;;;;:::i;:::-;8071:29;8116:16;8103:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8103:37:76;-1:-1:-1;8071:69:76;-1:-1:-1;8239:41:76;8297:16;8283:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8283:38:76;;8239:82;;8336:9;8331:486;8351:27;;;8331:486;;;8407:44;8427:16;;8444:1;8427:19;;;;;;8407:44;8399:82;;;;-1:-1:-1;;;8399:82:76;;;;;;;:::i;:::-;8511:14;;8496:12;;8526:16;;8543:1;8526:19;;;;;;;;;;;;:25;;;8511:41;;;;;;;;;;;;;;8496:56;;8570:7;:25;;;8566:241;;;8634:16;8644:5;8634:9;:16::i;:::-;8615:13;8629:1;8615:16;;;;;;;;;;;;;:35;-1:-1:-1;;;;;8615:35:76;;;-1:-1:-1;;;;;8615:35:76;;;;;8566:241;;;8719:13;8726:5;8719:6;:13::i;:::-;:73;;8755:16;8765:5;8755:9;:16::i;:::-;-1:-1:-1;;;;;8755:26:76;;8782:9;8755:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8719:73;;;8735:9;-1:-1:-1;;;;;8735:17:76;;8719:73;8689:24;8714:1;8689:27;;;;;;;;;;;;;:103;;;;;8566:241;-1:-1:-1;8380:3:76;;8331:486;;;;8830:7;:25;;;8826:138;;;8898:10;:8;:10::i;:::-;-1:-1:-1;;;;;8898:29:76;;8928:9;8939:13;8898:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8898:55:76;;;;;;;;;;;;:::i;:::-;8871:82;;8826:138;9018:63;9058:4;9064:7;:16;;;9018:39;:63::i;:::-;8999:16;;;:82;9091:10;:8;:10::i;:::-;-1:-1:-1;;;;;9091:19:76;;9111:6;9119;9127:9;9138:7;9091:55;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9216:44:76;;-1:-1:-1;9277:16:76;;-1:-1:-1;;9263:38:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9263:38:76;;9216:85;;9315:7;:25;;;9311:478;;;9386:10;:8;:10::i;:::-;-1:-1:-1;;;;;9386:29:76;;9416:9;9427:13;9386:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9386:55:76;;;;;;;;;;;;:::i;:::-;9356:85;;9311:478;;;9477:9;9472:307;9492:27;;;9472:307;;;9559:14;;9544:12;;9574:16;;9591:1;9574:19;;;;;;;;;;;;:25;;;9559:41;;;;;;;;;;;;;;9544:56;;9651:13;9658:5;9651:6;:13::i;:::-;:113;;9727:16;9737:5;9727:9;:16::i;:::-;-1:-1:-1;;;;;9727:26:76;;9754:9;9727:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9651:113;;;9687:9;-1:-1:-1;;;;;9687:17:76;;9651:113;9618:27;9646:1;9618:30;;;;;;;;;;;;;;;;;:146;-1:-1:-1;9521:3:76;;9472:307;;;;9311:478;9863:9;9858:240;9878:27;;;9858:240;;;9926:161;9969:16;;9986:1;9969:19;;;;;;;;;;;;:23;;;10010:63;10045:24;10070:1;10045:27;;;;;;;;;;;;;;10010;10038:1;10010:30;;;;;;;;;;;;;;:34;;:63;;;;:::i;9926:161::-;9907:3;;9858:240;;2791:977:73;2958:27;2978:6;2958:19;:27::i;:::-;2954:100;;;3010:33;3036:6;3010:25;:33::i;:::-;3001:42;;2954:100;-1:-1:-1;;;;;3241:23:73;;3259:4;3241:23;3237:152;;-1:-1:-1;;;;;3288:20:73;;3298:10;3288:20;3280:49;;;;-1:-1:-1;;;3280:49:73;;;;;;;:::i;:::-;3343:35;3354:6;3362:7;3371:6;3343:10;:35::i;:::-;3511:22;;;;;3494:14;;-1:-1:-1;;;;;3511:7:73;:14;;;;:22;;3526:6;;3511:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3494:39;-1:-1:-1;;;;;;3548:26:73;;3569:4;3548:26;3544:91;;3590:34;;;;;-1:-1:-1;;;;;3590:6:73;:15;;;;:34;;3606:9;;3617:6;;3590:34;;;:::i;2505:1310:74:-;2718:27;2738:6;2718:19;:27::i;:::-;2714:100;;;2770:33;2796:6;2770:25;:33::i;:::-;2761:42;;2714:100;2824:22;2856:10;-1:-1:-1;;;;;2856:16:74;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2824:51;-1:-1:-1;;;;;;3065:23:74;;3083:4;3065:23;3061:160;;-1:-1:-1;;;;;3112:20:74;;3122:10;3112:20;3104:49;;;;-1:-1:-1;;;3104:49:74;;;;;;;:::i;:::-;3167:43;3178:6;3186:15;3203:6;3167:10;:43::i;:::-;3308:52;;;;;-1:-1:-1;;;;;3308:23:74;;;;;:52;;3340:10;;3353:6;;3308:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3416:26:74;;;;;-1:-1:-1;;;;;3416:18:74;;;;;:26;;3435:6;;3416:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3541:35:74;;;;;3518:20;;-1:-1:-1;;;;;;3541:20:74;;;-1:-1:-1;3541:20:74;;:35;;3570:4;;3541:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3631:44;;;;;3518:58;;-1:-1:-1;;;;;;3631:19:74;;;;;:44;;3651:9;;3518:58;;3631:44;;;:::i;3955:327:76:-;4066:9;4061:156;4081:14;;;4061:156;;;4141:10;4124:3;;4128:1;4124:6;;;;;;;;;;;;:13;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4124:27:76;;:61;;;-1:-1:-1;4180:4:76;4155:3;;4159:1;4155:6;;;;;;;;;;;;:13;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4155:30:76;;4124:61;4116:90;;;;-1:-1:-1;;;4116:90:76;;;;;;;:::i;:::-;4097:3;;4061:156;;;;4226:10;:8;:10::i;:::-;-1:-1:-1;;;;;4226:28:76;;4263:5;4271:3;;4226:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2255:853:70;2454:27;2474:6;2454:19;:27::i;:::-;2450:100;;;2506:33;2532:6;2506:25;:33::i;:::-;2497:42;;2450:100;-1:-1:-1;;;;;2741:23:70;;2759:4;2741:23;2737:157;;-1:-1:-1;;;;;2788:20:70;;2798:10;2788:20;2780:49;;;;-1:-1:-1;;;2780:49:70;;;;;;;:::i;:::-;2843:40;2854:6;2862:12;2876:6;2843:10;:40::i;:::-;2921:53;;;;;2904:14;;-1:-1:-1;;;;;2921:19:70;;;;;:53;;2941:6;;2949:9;;2968:4;;2921:53;;;:::i;3525:153:69:-;3603:13;3640:31;3667:3;3640:26;:31::i;:::-;3628:43;3525:153;-1:-1:-1;;;3525:153:69:o;4796:358::-;5081:66;4998;4989:75;;4988:159;4796:358;;;;:::o;6626:375::-;6701:7;6721:12;6735:13;6752:31;6779:3;6752:26;:31::i;:::-;6720:63;;;;6798:33;6827:3;6798:28;:33::i;:::-;6794:179;;;6947:1;6941:4;6934:15;6989:5;6626:375;-1:-1:-1;;;6626:375:69:o;2421:369:48:-;2502:78;2536:6;2511:21;:31;;11046:3:14;2502:8:48;:78::i;:::-;2669:12;2687:9;-1:-1:-1;;;;;2687:14:48;2710:6;2687:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2668:54;;;2732:51;2741:7;11109:3:14;2732:8:48;:51::i;5878:392:69:-;5969:12;5984:20;6000:3;5984:15;:20::i;:::-;6235:19;;;;-1:-1:-1;;6221:43:69:o;385:111:47:-;431:7;461:1;457;:5;:32;;487:1;486:2;;457:32;;;473:1;457:32;450:39;385:111;-1:-1:-1;;385:111:47:o;3684:360:69:-;3812:11;3808:24;;3825:7;;3808:24;3866:15;;;3879:1;3866:15;;;;;;;;;3841:22;;3866:15;;;;;;;;;;;-1:-1:-1;3866:15:69;3841:40;;3903:5;3891:6;3898:1;3891:9;;;;;;;;-1:-1:-1;;;;;3891:17:69;;;;:9;;;;;;;;;;;:17;3945:16;;;3959:1;3945:16;;;;;;;;;3918:24;;3945:16;;;;;;;;;;;;-1:-1:-1;3945:16:69;3918:43;;3984:6;3971:7;3979:1;3971:10;;;;;;;;;;;;;:19;;;;;4001:36;4013:6;4021;4029:7;4001:11;:36::i;3494:278:48:-;3569:12;3653;3667:23;3694:6;-1:-1:-1;;;;;3694:11:48;3706:4;3694:17;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3652:59;;;;3728:37;3745:7;3754:10;3728:16;:37::i;:::-;3721:44;3494:278;-1:-1:-1;;;;;3494:278:48:o;896:312:44:-;1193:6;1173:27;;896:312::o;5822:336:76:-;5942:12;5982:17;5974:4;:25;;;;;;;5970:182;;;6022:53;6066:8;6022:43;:53::i;:::-;6015:60;;;;5970:182;6106:35;7111:3:14;6106:7:76;:35::i;1193:166:47:-;1251:7;1270:37;1284:1;1279;:6;;5172:1:14;1270:8:47;:37::i;:::-;-1:-1:-1;1329:5:47;;;1193:166::o;2762:110:60:-;2858:5;2762:110::o;1705:105::-;-1:-1:-1;;;;;1781:22:60;;;1705:105::o;10110:336:76:-;10230:12;10270:17;10262:4;:25;;;;;;;10258:182;;;10310:53;10354:8;10310:43;:53::i;10258:182::-;10394:35;8698:3:14;10394:7:76;:35::i;7195:404:69:-;7266:12;7280:13;7312:20;7328:3;7312:15;:20::i;:::-;7305:27;;7578:4;7572:11;7563:20;;7549:44;;;:::o;5271:505::-;5620:66;5611:75;5703:66;5610:159;;5271:505::o;918:101:14:-;987:9;982:34;;998:18;1006:9;998:7;:18::i;7755:595:69:-;7815:7;8341:1;8286:27;8309:3;8286:22;:27::i;:::-;8315:20;8269:67;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;8269:67:69;;;;;;8259:78;;8269:67;8259:78;;;;8251:91;;7755:595;-1:-1:-1;;7755:595:69:o;4050:628::-;4195:33;4258:6;:13;4231:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4195:77;;4287:9;4282:346;4302:6;:13;4298:1;:17;4282:346;;;4345:272;;;;;;;;;;4560:42;4345:272;;;;4406:6;4413:1;4406:9;;;;;;;;;;;;;;-1:-1:-1;;;;;4345:272:69;;;;;4443:7;4451:1;4443:10;;;;;;;;;;;;;;4345:272;;;;4479:6;-1:-1:-1;;;;;4345:272:69;;;;;4530:4;-1:-1:-1;;;;;4345:272:69;;;;4336:3;4340:1;4336:6;;;;;;;;;;;;;;;;;:281;4317:3;;4282:346;;;;4638:10;:8;:10::i;:::-;-1:-1:-1;;;;;4638:28:69;;4667:3;4638:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;5057:714:48;5145:12;5173:7;5169:596;;;-1:-1:-1;5203:10:48;5196:17;;5169:596;5314:17;;:21;5310:445;;5571:10;5565:17;5631:15;5618:10;5614:2;5610:19;5603:44;5520:145;5703:37;11712:3:14;5703:7:48;:37::i;6164:557:76:-;6257:12;6281:34;6318:39;6348:8;6318:29;:39::i;:::-;6281:76;-1:-1:-1;6380:57:76;6372:4;:65;;;;;;;;;6368:347;;;6460:55;6506:8;6460:45;:55::i;:::-;6453:62;;;;;6368:347;6696:8;6689:15;;;;;1437:126:14;1484:28;1492:9;1484:28;:7;:28::i;:::-;1437:126;:::o;10452:728:76:-;10545:12;10569:34;10606:39;10636:8;10606:29;:39::i;:::-;10569:76;-1:-1:-1;10668:60:76;10660:4;:68;;;;;;;;;10656:518;;;10751:57;10799:8;10751:47;:57::i;10656:518::-;10837:57;10829:4;:65;;;;;;;;;10825:349;;;10917:55;10963:8;10917:45;:55::i;8541:174:69:-;8641:66;8635:72;;8541:174::o;1220:122:13:-;1280:8;1318:4;1307:28;;;;;;;;;;;;:::i;6727:827:76:-;6822:12;6847:26;6875:23;6902:53;6946:8;6902:43;:53::i;:::-;6846:109;;;;6966:20;7009:9;7004:268;7028:9;:16;7024:1;:20;7004:268;;;7065:14;7082:9;7092:1;7082:12;;;;;;;;;;;;;;7065:29;;7112:27;7132:6;7112:19;:27::i;:::-;7108:154;;;7174:33;7200:6;7174:25;:33::i;:::-;7159:9;7169:1;7159:12;;;;;;;;;;;;;:48;;;;;7243:4;7225:22;;7108:154;-1:-1:-1;7046:3:76;;7004:268;;;;7389:15;:158;;7539:8;7389:158;;;7434:57;7493:9;7504:15;7423:97;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7370:177;6727:827;-1:-1:-1;;;;;6727:827:76:o;1670:3378:14:-;-1:-1:-1;;;1732:18:14;4383:79;;;4601:66;4595:4;4588:80;4743:1;4737:4;4730:15;2871:2;2904:18;;;2949;;;2876:4;2945:29;;;3747:1;3838:14;2856:18;;;;3827:26;;;;2997:18;;;;3044;;;3040:29;;3859:2;3855:17;3823:50;3737:4;3743:18;;;;;;3733:29;3729:2;3725:38;3802:72;;;;3797:3;3793:82;4810:4;4803:26;1761:14;;;;;5036:3;;5026:14;11186:605:76;11283:12;11308:19;11329:18;11351:52;11394:8;11351:42;:52::i;:::-;11307:96;;;;11418:32;11438:11;11418:19;:32::i;:::-;11414:371;;;11480:38;11506:11;11480:25;:38::i;:::-;11466:52;;11550:60;11612:11;11625:10;11539:97;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11532:104;;;;;;11414:371;11766:8;11759:15;;;;;;11797:567;11892:12;11916:19;11938:53;11982:8;11938:43;:53::i;:::-;11916:75;;12006:32;12026:11;12006:19;:32::i;:::-;12002:356;;;12068:38;12094:11;12068:25;:38::i;:::-;12054:52;;12138:57;12197:11;12127:82;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12120:89;;;;;1664:253:13;1762:26;1790:23;1873:4;1862:48;;;;;;;;;;;;:::i;:::-;1829:81;;;;-1:-1:-1;1664:253:13;-1:-1:-1;;;1664:253:13:o;2330:207::-;2403:19;2424:18;2495:4;2484:46;;;;;;;;;;;;:::i;2543:167::-;2617:19;2677:4;2666:37;;;;;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;283:146::-;358:20;;383:41;358:20;383:41;:::i;454:352::-;;;584:3;577:4;569:6;565:17;561:27;551:2;;-1:-1;;592:12;551:2;-1:-1;622:20;;662:18;651:30;;648:2;;;-1:-1;;684:12;648:2;728:4;720:6;716:17;704:29;;779:3;728:4;;763:6;759:17;720:6;745:32;;742:41;739:2;;;796:1;;786:12;739:2;544:262;;;;;:::o;1241:752::-;;1373:3;1366:4;1358:6;1354:17;1350:27;1340:2;;-1:-1;;1381:12;1340:2;1428:6;1415:20;1450:95;1465:79;1537:6;1465:79;:::i;:::-;1450:95;:::i;:::-;1573:21;;;1441:104;-1:-1;1617:4;1630:14;;;;1605:17;;;1719;;;1710:27;;;;1707:36;-1:-1;1704:2;;;1756:1;;1746:12;1704:2;1781:1;1766:221;1791:6;1788:1;1785:13;1766:221;;;8029:6;8016:20;8041:48;8083:5;8041:48;:::i;:::-;1859:65;;1938:14;;;;1966;;;;1813:1;1806:9;1766:221;;;1770:14;;;;;1333:660;;;;:::o;3591:771::-;;3739:3;3732:4;3724:6;3720:17;3716:27;3706:2;;-1:-1;;3747:12;3706:2;3794:6;3781:20;3816:111;3831:95;3919:6;3831:95;:::i;3816:111::-;3955:21;;;3807:120;-1:-1;3999:4;4012:14;;;;3987:17;;;4107:1;4092:264;4117:6;4114:1;4111:13;4092:264;;;4200:3;4187:17;3991:6;4175:30;10991:4;;-1:-1;;4175:30;10974:3;10970:19;;10966:30;10963:2;;;4107:1;;10999:12;10963:2;11027:20;10991:4;11027:20;:::i;:::-;3999:4;4175:30;;7057:20;11113:16;11106:75;11304:22;;4175:30;11304:22;15747:20;3999:4;11269:5;11265:16;11258:75;11457:22;;4175:30;11457:22;15747:20;11304:22;11422:5;11418:16;11411:75;11603:22;;;;4175:30;11603:22;15747:20;11457:22;11568:5;11564:16;11557:75;;10991:4;4175:30;11710:19;11697:33;11683:47;;11750:18;11742:6;11739:30;11736:2;;;4107:1;;11772:12;11736:2;11817:58;11871:3;3999:4;11862:6;4175:30;11847:22;;11817:58;:::i;:::-;11799:16;;;11792:84;4212:81;;-1:-1;;4307:14;;;;4335;;;;4139:1;4132:9;4092:264;;4416:388;;;4582:3;4575:4;4567:6;4563:17;4559:27;4549:2;;-1:-1;;4590:12;4549:2;-1:-1;4620:20;;4660:18;4649:30;;4646:2;;;-1:-1;;4682:12;4646:2;4726:4;4718:6;4714:17;4702:29;;4777:3;4726:4;4769;4761:6;4757:17;4718:6;4743:32;;4740:41;4737:2;;;4794:1;;4784:12;5261:707;;5378:3;5371:4;5363:6;5359:17;5355:27;5345:2;;-1:-1;;5386:12;5345:2;5433:6;5420:20;5455:80;5470:64;5527:6;5470:64;:::i;5455:80::-;5563:21;;;5446:89;-1:-1;5607:4;5620:14;;;;5595:17;;;5709;;;5700:27;;;;5697:36;-1:-1;5694:2;;;5746:1;;5736:12;5694:2;5771:1;5756:206;5781:6;5778:1;5775:13;5756:206;;;15747:20;;5849:50;;5913:14;;;;5941;;;;5803:1;5796:9;5756:206;;5994:722;;6122:3;6115:4;6107:6;6103:17;6099:27;6089:2;;-1:-1;;6130:12;6089:2;6170:6;6164:13;6192:80;6207:64;6264:6;6207:64;:::i;6192:80::-;6300:21;;;6183:89;-1:-1;6344:4;6357:14;;;;6332:17;;;6446;;;6437:27;;;;6434:36;-1:-1;6431:2;;;6483:1;;6473:12;6431:2;6508:1;6493:217;6518:6;6515:1;6512:13;6493:217;;;15895:13;;6586:61;;6661:14;;;;6689;;;;6540:1;6533:9;6493:217;;6724:124;6788:20;;6813:30;6788:20;6813:30;:::i;7486:440::-;;7587:3;7580:4;7572:6;7568:17;7564:27;7554:2;;-1:-1;;7595:12;7554:2;7642:6;7629:20;81062:18;81054:6;81051:30;81048:2;;;-1:-1;;81084:12;81048:2;7664:64;81225:4;-1:-1;;7580:4;81142:6;81138:17;81134:33;81215:15;7664:64;:::i;:::-;7655:73;;7748:6;7741:5;7734:21;7852:3;81225:4;7843:6;7776;7834:16;;7831:25;7828:2;;;7869:1;;7859:12;7828:2;92555:6;81225:4;7776:6;7772:17;81225:4;7810:5;7806:16;92532:30;92611:1;92593:16;;;81225:4;92593:16;92586:27;7810:5;7547:379;-1:-1;;7547:379::o;10054:158::-;10135:20;;95939:1;95929:12;;95919:2;;95955:1;;95945:12;10219:156;10299:20;;96053:1;96043:12;;96033:2;;96069:1;;96059:12;11940:1120;;12062:4;12050:9;12045:3;12041:19;12037:30;12034:2;;;-1:-1;;12070:12;12034:2;12098:20;12062:4;12098:20;:::i;:::-;12089:29;;12183:17;12170:31;12221:18;;12213:6;12210:30;12207:2;;;12198:1;;12243:12;12207:2;12288:89;12373:3;12364:6;12353:9;12349:22;12288:89;:::i;:::-;12270:16;12263:115;12476:2;12465:9;12461:18;12448:32;12434:46;;12221:18;12492:6;12489:30;12486:2;;;12198:1;;12522:12;12486:2;12567:74;12637:3;12628:6;12617:9;12613:22;12567:74;:::i;:::-;12476:2;12553:5;12549:16;12542:100;12735:2;12724:9;12720:18;12707:32;12693:46;;12221:18;12751:6;12748:30;12745:2;;;12198:1;;12781:12;12745:2;;12826:58;12880:3;12871:6;12860:9;12856:22;12826:58;:::i;:::-;12735:2;12812:5;12808:16;12801:84;;12992:46;13034:3;12959:2;13014:9;13010:22;12992:46;:::i;:::-;12959:2;12978:5;12974:16;12967:72;12028:1032;;;;:::o;13104:166::-;;13222:3;13213:6;13208:3;13204:16;13200:26;13197:2;;;-1:-1;;13229:12;13197:2;-1:-1;13249:15;13190:80;-1:-1;13190:80::o;15958:126::-;16023:20;;90204:4;90193:16;;96511:33;;96501:2;;96558:1;;96548:12;16091:241;;16195:2;16183:9;16174:7;16170:23;16166:32;16163:2;;;-1:-1;;16201:12;16163:2;85:6;72:20;97:33;124:5;97:33;:::i;16339:263::-;;16454:2;16442:9;16433:7;16429:23;16425:32;16422:2;;;-1:-1;;16460:12;16422:2;226:6;220:13;238:33;265:5;238:33;:::i;16609:617::-;;;;;16764:3;16752:9;16743:7;16739:23;16735:33;16732:2;;;-1:-1;;16771:12;16732:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;16823:63;-1:-1;16923:2;16962:22;;72:20;97:33;72:20;97:33;:::i;:::-;16726:500;;16931:63;;-1:-1;;;;17031:2;17070:22;;15747:20;;17139:2;17178:22;15747:20;;16726:500::o;17233:609::-;;;;;17387:2;17375:9;17366:7;17362:23;17358:32;17355:2;;;-1:-1;;17393:12;17355:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;17445:63;-1:-1;17545:2;17581:22;;6788:20;6813:30;6788:20;6813:30;:::i;:::-;17553:60;-1:-1;17678:2;17663:18;;17650:32;17702:18;17691:30;;;17688:2;;;-1:-1;;17724:12;17688:2;17809:6;17798:9;17794:22;;;7255:3;7248:4;7240:6;7236:17;7232:27;7222:2;;-1:-1;;7263:12;7222:2;7306:6;7293:20;17702:18;7325:6;7322:30;7319:2;;;-1:-1;;7355:12;7319:2;7450:3;17545:2;7430:17;7391:6;7416:32;;7413:41;7410:2;;;-1:-1;;7457:12;7410:2;17349:493;;;;-1:-1;;17545:2;7387:17;;-1:-1;;;17349:493::o;17849:491::-;;;;17987:2;17975:9;17966:7;17962:23;17958:32;17955:2;;;-1:-1;;17993:12;17955:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;18045:63;18145:2;18184:22;;15747:20;;-1:-1;18253:2;18292:22;;;15747:20;;17949:391;-1:-1;;;17949:391::o;18347:522::-;;;;18503:2;18491:9;18482:7;18478:23;18474:32;18471:2;;;-1:-1;;18509:12;18471:2;18567:17;18554:31;18605:18;18597:6;18594:30;18591:2;;;-1:-1;;18627:12;18591:2;18665:80;18737:7;18728:6;18717:9;18713:22;18665:80;:::i;:::-;18647:98;;;;-1:-1;18782:2;18821:22;;;;15747:20;;18465:404;-1:-1;;;;18465:404::o;18876:457::-;;;19045:2;19033:9;19024:7;19020:23;19016:32;19013:2;;;-1:-1;;19051:12;19013:2;19109:17;19096:31;19147:18;19139:6;19136:30;19133:2;;;-1:-1;;19169:12;19133:2;19207:110;19309:7;19300:6;19289:9;19285:22;19207:110;:::i;:::-;19189:128;;;;-1:-1;19007:326;-1:-1;;;;19007:326::o;19340:390::-;;19479:2;;19467:9;19458:7;19454:23;19450:32;19447:2;;;-1:-1;;19485:12;19447:2;19536:17;19530:24;19574:18;19566:6;19563:30;19560:2;;;-1:-1;;19596:12;19560:2;19682:22;;2946:4;2934:17;;2930:27;-1:-1;2920:2;;-1:-1;;2961:12;2920:2;3001:6;2995:13;3023:79;3038:63;3094:6;3038:63;:::i;3023:79::-;3130:21;;;3187:14;;;;3162:17;;;3276;;;3267:27;;;;3264:36;-1:-1;3261:2;;;-1:-1;;3303:12;3261:2;-1:-1;3329:10;;3323:216;3348:6;3345:1;3342:13;3323:216;;;10775:13;;3416:60;;3370:1;3363:9;;;;;3490:14;;;;3518;;3323:216;;;-1:-1;19616:98;19441:289;-1:-1;;;;;;;19441:289::o;19737:588::-;;;;19926:2;19914:9;19905:7;19901:23;19897:32;19894:2;;;-1:-1;;19932:12;19894:2;19990:17;19977:31;20028:18;;20020:6;20017:30;20014:2;;;-1:-1;;20050:12;20014:2;20184:6;20173:9;20169:22;;;5013:3;5006:4;4998:6;4994:17;4990:27;4980:2;;-1:-1;;5021:12;4980:2;5064:6;5051:20;20028:18;5083:6;5080:30;5077:2;;;-1:-1;;5113:12;5077:2;5208:3;5157:4;5200;5192:6;5188:17;5149:6;5174:32;;5171:41;5168:2;;;-1:-1;;5215:12;5168:2;5157:4;5145:17;;;;20070:131;;-1:-1;20277:22;;;;15747:20;;19888:437;-1:-1;;;;19888:437::o;20332:392::-;;20472:2;20460:9;20451:7;20447:23;20443:32;20440:2;;;-1:-1;;20478:12;20440:2;20529:17;20523:24;20567:18;20559:6;20556:30;20553:2;;;-1:-1;;20589:12;20553:2;20619:89;20700:7;20691:6;20680:9;20676:22;20619:89;:::i;:::-;20609:99;20434:290;-1:-1;;;;20434:290::o;20731:257::-;;20843:2;20831:9;20822:7;20818:23;20814:32;20811:2;;;-1:-1;;20849:12;20811:2;6936:6;6930:13;6948:30;6972:5;6948:30;:::i;20995:859::-;;;;;;;21179:3;21167:9;21158:7;21154:23;21150:33;21147:2;;;-1:-1;;21186:12;21147:2;6801:6;6788:20;6813:30;6837:5;6813:30;:::i;:::-;21238:60;-1:-1;21335:2;21374:22;;72:20;97:33;72:20;97:33;:::i;:::-;21343:63;-1:-1;21443:2;21482:22;;15747:20;;-1:-1;21569:51;21612:7;21551:2;21588:22;;21569:51;:::i;:::-;21559:61;;21657:3;21701:9;21697:22;7057:20;21666:63;;21766:3;21810:9;21806:22;7057:20;21775:63;;21141:713;;;;;;;;:::o;21861:1293::-;;;;;;;;22176:3;22164:9;22155:7;22151:23;22147:33;22144:2;;;-1:-1;;22183:12;22144:2;7070:6;7057:20;22235:63;;22353:67;22412:7;22335:2;22392:9;22388:22;22353:67;:::i;:::-;22343:77;;22457:2;22500:9;22496:22;72:20;97:33;124:5;97:33;:::i;:::-;22465:63;-1:-1;22565:2;22612:22;;358:20;383:41;358:20;383:41;:::i;:::-;22573:71;-1:-1;22709:3;22694:19;;22681:33;22734:18;22723:30;;;22720:2;;;-1:-1;;22756:12;22720:2;22786:86;22864:7;22855:6;22844:9;22840:22;22786:86;:::i;:::-;22776:96;;22937:3;22926:9;22922:19;22909:33;22895:47;;22734:18;22954:6;22951:30;22948:2;;;-1:-1;;22984:12;22948:2;;23022:116;23130:7;23121:6;23110:9;23106:22;23022:116;:::i;:::-;22138:1016;;;;-1:-1;22138:1016;;-1:-1;22138:1016;;;;23004:134;;-1:-1;;;22138:1016::o;23161:1175::-;;;;;;;;23414:3;23402:9;23393:7;23389:23;23385:33;23382:2;;;-1:-1;;23421:12;23382:2;7070:6;7057:20;23473:63;;23591:67;23650:7;23573:2;23630:9;23626:22;23591:67;:::i;:::-;23581:77;;23695:2;23738:9;23734:22;72:20;97:33;124:5;97:33;:::i;:::-;23703:63;-1:-1;23803:2;23842:22;;72:20;97:33;72:20;97:33;:::i;:::-;23811:63;-1:-1;23939:3;23924:19;;23911:33;23964:18;23953:30;;23950:2;;;-1:-1;;23986:12;23950:2;24016:86;24094:7;24085:6;24074:9;24070:22;24016:86;:::i;:::-;24006:96;;;24139:3;24183:9;24179:22;15747:20;24148:63;;24248:3;24292:9;24288:22;15747:20;24257:63;;23376:960;;;;;;;;;;:::o;24343:1159::-;;;;;;;;;24585:3;24573:9;24564:7;24560:23;24556:33;24553:2;;;-1:-1;;24592:12;24553:2;8205:6;8192:20;8217:57;8268:5;8217:57;:::i;:::-;24644:87;-1:-1;24768:2;24807:22;;72:20;97:33;72:20;97:33;:::i;:::-;24776:63;-1:-1;24876:2;24915:22;;15747:20;;-1:-1;24984:2;25023:22;;15747:20;;-1:-1;25092:3;25129:22;;6788:20;6813:30;6788:20;6813:30;:::i;:::-;25101:60;-1:-1;25217:51;25260:7;25198:3;25236:22;;25217:51;:::i;:::-;25207:61;;25305:3;25349:9;25345:22;7057:20;25314:63;;25414:3;25458:9;25454:22;7057:20;25423:63;;24547:955;;;;;;;;;;;:::o;25509:1033::-;;;;;;;;25734:3;25722:9;25713:7;25709:23;25705:33;25702:2;;;-1:-1;;25741:12;25702:2;8387:6;8374:20;8399:54;8447:5;8399:54;:::i;:::-;25793:84;-1:-1;25914:2;25953:22;;72:20;97:33;72:20;97:33;:::i;:::-;25922:63;-1:-1;26022:2;26061:22;;15747:20;;-1:-1;26130:2;26169:22;;15747:20;;-1:-1;26257:51;26300:7;26238:3;26276:22;;26257:51;:::i;:::-;26247:61;;26345:3;26389:9;26385:22;7057:20;26354:63;;26454:3;26498:9;26494:22;7057:20;26463:63;;25696:846;;;;;;;;;;:::o;26849:396::-;;;26985:2;26973:9;26964:7;26960:23;26956:32;26953:2;;;-1:-1;;26991:12;26953:2;8560:6;8547:20;8572:48;8614:5;8572:48;:::i;:::-;27043:78;27158:2;27197:22;;;;15747:20;;-1:-1;;;26947:298::o;27252:777::-;;;;;;27441:3;27429:9;27420:7;27416:23;27412:33;27409:2;;;-1:-1;;27448:12;27409:2;8900:6;8887:20;8912:50;8956:5;8912:50;:::i;:::-;27500:80;-1:-1;27617:2;27656:22;;72:20;97:33;72:20;97:33;:::i;:::-;27625:63;-1:-1;27725:2;27764:22;;72:20;97:33;72:20;97:33;:::i;:::-;27403:626;;;;-1:-1;27733:63;;27833:2;27872:22;;15747:20;;-1:-1;27941:3;27981:22;15747:20;;27403:626;-1:-1;;27403:626::o;29144:677::-;;;;;29329:3;29317:9;29308:7;29304:23;29300:33;29297:2;;;-1:-1;;29336:12;29297:2;9271:6;9258:20;9283:63;9340:5;9283:63;:::i;:::-;29388:93;-1:-1;29518:2;29557:22;;72:20;97:33;72:20;97:33;:::i;:::-;29526:63;-1:-1;29626:2;29665:22;;72:20;97:33;72:20;97:33;:::i;:::-;29291:530;;;;-1:-1;29634:63;;29734:2;29773:22;15747:20;;-1:-1;;29291:530::o;29828:911::-;;;;;;;30038:3;30026:9;30017:7;30013:23;30009:33;30006:2;;;-1:-1;;30045:12;30006:2;9462:6;9449:20;9474:57;9525:5;9474:57;:::i;:::-;30097:87;-1:-1;30221:2;30260:22;;72:20;97:33;72:20;97:33;:::i;:::-;30229:63;-1:-1;30329:2;30368:22;;72:20;97:33;72:20;97:33;:::i;:::-;30337:63;-1:-1;30437:2;30476:22;;15747:20;;-1:-1;30545:3;30582:22;;6788:20;6813:30;6788:20;6813:30;:::i;:::-;30554:60;;;;30651:3;30695:9;30691:22;15747:20;30660:63;;30000:739;;;;;;;;:::o;31540:287::-;;31667:2;31655:9;31646:7;31642:23;31638:32;31635:2;;;-1:-1;;31673:12;31635:2;9820:6;9814:13;9832:45;9871:5;9832:45;:::i;31834:423::-;;;31978:2;31966:9;31957:7;31953:23;31949:32;31946:2;;;-1:-1;;31984:12;31946:2;9820:6;9814:13;9832:45;9871:5;9832:45;:::i;:::-;32159:2;32209:22;;;;15895:13;32036:86;;15895:13;;-1:-1;;;31940:317::o;32264:559::-;;;;32425:2;32413:9;32404:7;32400:23;32396:32;32393:2;;;-1:-1;;32431:12;32393:2;9820:6;9814:13;9832:45;9871:5;9832:45;:::i;:::-;32606:2;32656:22;;15895:13;32725:2;32775:22;;;15895:13;32483:86;;15895:13;;-1:-1;15895:13;32387:436;-1:-1;;;32387:436::o;33124:688::-;;;;33310:2;33298:9;33289:7;33285:23;33281:32;33278:2;;;-1:-1;;33316:12;33278:2;9820:6;9814:13;9832:45;9871:5;9832:45;:::i;:::-;33512:2;33497:18;;33491:25;33368:86;;-1:-1;33536:18;33525:30;;33522:2;;;-1:-1;;33558:12;33522:2;33588:89;33669:7;33660:6;33649:9;33645:22;33588:89;:::i;:::-;33578:99;;;33714:2;33768:9;33764:22;15895:13;33722:74;;33272:540;;;;;:::o;33819:1983::-;;;;;;;;;;;;34301:3;34289:9;34280:7;34276:23;34272:33;34269:2;;;-1:-1;;34308:12;34269:2;34370:66;34428:7;34404:22;34370:66;:::i;:::-;34360:76;;34525:18;;34501:2;34490:9;34486:18;34473:32;34514:30;34511:2;;;-1:-1;;34547:12;34511:2;34577:109;34678:7;34501:2;34490:9;34486:18;34473:32;34658:9;34654:22;34577:109;:::i;:::-;34567:119;;34525:18;34751:2;34740:9;34736:18;34723:32;34764:30;34761:2;;;-1:-1;;34797:12;34761:2;34835:95;34922:7;34751:2;34740:9;34736:18;34723:32;34902:9;34898:22;34835:95;:::i;:::-;34817:113;;-1:-1;34817:113;-1:-1;34985:87;35064:7;34967:2;35040:22;;34985:87;:::i;:::-;34975:97;;34525:18;35137:3;35126:9;35122:19;35109:33;35151:30;35148:2;;;-1:-1;;35184:12;35148:2;35222:79;35293:7;35137:3;35126:9;35122:19;35109:33;35273:9;35269:22;35222:79;:::i;:::-;35204:97;;-1:-1;35204:97;-1:-1;35338:3;35378:22;;15747:20;;-1:-1;35447:3;35487:22;;15747:20;;-1:-1;35584:3;35569:19;;35556:33;35598:30;-1:-1;35595:2;;;-1:-1;;35631:12;35595:2;;35670:116;35778:7;35584:3;35573:9;35569:19;35556:33;35758:9;35754:22;35670:116;:::i;:::-;35651:135;;;;;;;;34263:1539;;;;;;;;;;;;;;:::o;35809:1081::-;;;;;;;36060:3;36048:9;36039:7;36035:23;36031:33;36028:2;;;-1:-1;;36067:12;36028:2;36125:17;36112:31;36163:18;;36155:6;36152:30;36149:2;;;-1:-1;;36185:12;36149:2;36264:22;;;;14589:4;14568:19;;;14564:30;14561:2;;;-1:-1;;14597:12;14561:2;14625:20;14589:4;14625:20;:::i;:::-;7070:6;7057:20;14711:16;14704:75;14873:62;14931:3;14840:2;14911:9;14907:22;14873:62;:::i;:::-;14840:2;14859:5;14855:16;14848:88;15000:2;15073:9;15069:22;8016:20;8041:48;8083:5;8041:48;:::i;:::-;15000:2;15015:16;;15008:90;15196:64;15256:3;15163:2;15232:22;;15196:64;:::i;:::-;15163:2;15182:5;15178:16;15171:90;15324:3;15383:9;15379:22;15747:20;15324:3;15344:5;15340:16;15333:75;15501:3;15490:9;15486:19;15473:33;36163:18;15518:6;15515:30;15512:2;;;-1:-1;;15548:12;15512:2;15593:58;15647:3;15638:6;15627:9;15623:22;15593:58;:::i;:::-;15501:3;15579:5;15575:16;15568:84;;36205:91;;;;;;36351:87;36430:7;14840:2;36410:9;36406:22;36351:87;:::i;:::-;36022:868;;36341:97;;-1:-1;;;;15501:3;36515:22;;15747:20;;14589:4;36624:22;;15747:20;;36693:3;36733:22;;15747:20;;-1:-1;36802:3;36842:22;;;15747:20;;-1:-1;36022:868::o;36897:241::-;;37001:2;36989:9;36980:7;36976:23;36972:32;36969:2;;;-1:-1;;37007:12;36969:2;-1:-1;15747:20;;36963:175;-1:-1;36963:175::o;37145:263::-;;37260:2;37248:9;37239:7;37235:23;37231:32;37228:2;;;-1:-1;;37266:12;37228:2;-1:-1;15895:13;;37222:186;-1:-1;37222:186::o;37415:366::-;;;37536:2;37524:9;37515:7;37511:23;37507:32;37504:2;;;-1:-1;;37542:12;37504:2;-1:-1;;15747:20;;;37694:2;37733:22;;;15747:20;;-1:-1;37498:283::o;37788:399::-;;;37920:2;37908:9;37899:7;37895:23;37891:32;37888:2;;;-1:-1;;37926:12;37888:2;-1:-1;;15895:13;;38089:2;38139:22;;;15895:13;;;;;-1:-1;37882:305::o;40211:127::-;-1:-1;;;;;89988:54;40288:45;;40282:56::o;41462:740::-;;84919:6;84914:3;84907:19;84956:4;;84951:3;84947:14;41624:93;;41817:21;-1:-1;41844:336;41869:6;41866:1;41863:13;41844:336;;;8029:6;8016:20;8041:48;8083:5;8041:48;:::i;:::-;-1:-1;;;;;89988:54;50851:65;;38560:14;;;;87159:12;;;;41891:1;41884:9;41844:336;;;-1:-1;42186:10;;41611:591;-1:-1;;;;;41611:591::o;43843:657::-;;84919:6;84914:3;84907:19;84956:4;;84951:3;84947:14;43988:92;;44164:21;-1:-1;44191:287;44216:6;44213:1;44210:13;44191:287;;;10629:20;;49413:37;;38950:14;;;;87457:12;;;;44238:1;44231:9;44191:287;;47733:670;;47916:5;82794:12;84919:6;84914:3;84907:19;84956:4;;84951:3;84947:14;47928:83;;84956:4;48082:5;81642:14;-1:-1;48121:260;48146:6;48143:1;48140:13;48121:260;;;48207:13;;49413:37;;40034:14;;;;83707;;;;48168:1;48161:9;48121:260;;49140:94;88007:13;88000:21;49195:34;;49189:45::o;50082:323::-;;50214:5;82794:12;84919:6;84914:3;84907:19;50297:52;50342:6;84956:4;84951:3;84947:14;84956:4;50323:5;50319:16;50297:52;:::i;:::-;93154:2;93134:14;-1:-1;;93130:28;50361:39;;;;84956:4;50361:39;;50162:243;-1:-1;;50162:243::o;54953:1142::-;55188:23;;55120:4;55224:38;;;82794:12;;55111:14;;;84907:19;;;54953:1142;;84956:4;;81642:14;;;;84947;;;;54953:1142;42682:290;42707:6;42704:1;42701:13;42682:290;;;42768:13;;-1:-1;;;;;89988:54;50851:65;;83707:14;;;;38560;;;;42729:1;42722:9;42682:290;;;42686:14;;84956:4;55482:5;55478:16;55472:23;55452:43;;55541:3;55535:4;55531:14;84956:4;55519:3;55515:14;55508:38;55561:103;55659:4;55645:12;55561:103;:::i;:::-;55553:111;;;;55753:4;55746:5;55742:16;55736:23;55805:3;55799:4;55795:14;55753:4;55783:3;55779:14;55772:38;55825:71;55891:4;55877:12;55825:71;:::i;:::-;55817:79;;;55994:4;55987:5;55983:16;55977:23;56006:57;55994:4;56052:3;56048:14;56034:12;56006:57;:::i;:::-;-1:-1;56079:11;55093:1002;-1:-1;;;55093:1002::o;56169:949::-;85:6;72:20;97:33;124:5;97:33;:::i;:::-;-1:-1;;;;;89988:54;;;40288:45;;86744:2;86735:12;;6788:20;;6813:30;6788:20;6813:30;:::i;:::-;88007:13;;88000:21;86744:2;56687:14;;49195:34;87001:12;;;358:20;;383:41;358:20;383:41;:::i;:::-;89988:54;87001:12;56897:14;;40288:45;86879:12;;;6788:20;6813:30;6788:20;6813:30;:::i;:::-;49222:5;88007:13;88000:21;86879:12;57086:3;57082:14;49195:34;;56301:817;;:::o;62488:271::-;;50572:5;82794:12;50683:52;50728:6;50723:3;50716:4;50709:5;50705:16;50683:52;:::i;:::-;50747:16;;;;;62622:137;-1:-1;;62622:137::o;62766:448::-;;50572:5;82794:12;50683:52;50728:6;50723:3;50716:4;50709:5;50705:16;50683:52;:::i;:::-;50747:16;;92555:6;92550:3;50747:16;92532:30;92593:16;;;92586:27;;;-1:-1;92593:16;62956:258;-1:-1;;62956:258::o;63607:392::-;49413:37;;;63860:2;63851:12;;49413:37;63962:12;;;63751:248::o;64006:222::-;-1:-1;;;;;89988:54;;;;40288:45;;64133:2;64118:18;;64104:124::o;64480:464::-;-1:-1;;;;;89988:54;;;40288:45;;89988:54;;;;64853:2;64838:18;;40288:45;88007:13;;88000:21;64930:2;64915:18;;49195:34;64673:2;64658:18;;64644:300::o;64951:527::-;;65179:2;65168:9;65164:18;-1:-1;;;;;89999:42;87817:5;89988:54;40148:3;40141:58;65305:2;65179;65305;65294:9;65290:18;65283:48;65345:123;43264:5;82794:12;84919:6;84914:3;84907:19;84947:14;65168:9;84947:14;43276:93;;65305:2;43455:5;81642:14;43467:21;;-1:-1;43494:290;43519:6;43516:1;43513:13;43494:290;;;43580:13;;89988:54;;50851:65;;83707:14;;;;38772;;;;43541:1;43534:9;43494:290;;;-1:-1;65337:131;;65150:328;-1:-1;;;;;;;;65150:328::o;65485:984::-;-1:-1;;;;;89988:54;;;40288:45;;89988:54;;;;65963:2;65948:18;;40288:45;66046:2;66031:18;;49413:37;;;;66129:2;66114:18;;49413:37;;;;88007:13;88000:21;66206:3;66191:19;;49195:34;90204:4;90193:16;66286:3;66271:19;;62441:35;66370:3;66355:19;;49413:37;66454:3;66439:19;;49413:37;;;;65798:3;65783:19;;65769:700::o;66476:884::-;-1:-1;;;;;89988:54;;;40288:45;;89988:54;;;;66932:2;66917:18;;40288:45;67015:2;67000:18;;49413:37;;;;67098:2;67083:18;;49413:37;;;;90204:4;90193:16;67177:3;67162:19;;62441:35;67261:3;67246:19;;49413:37;67345:3;67330:19;;49413:37;;;;66767:3;66752:19;;66738:622::o;67367:872::-;-1:-1;;;;;89988:54;;;40288:45;;88007:13;;88000:21;67811:2;67796:18;;49195:34;89988:54;;;;67894:2;67879:18;;40288:45;67977:2;67962:18;;49413:37;;;;90204:4;90193:16;68056:3;68041:19;;62441:35;68140:3;68125:19;;49413:37;;;;68224:3;68209:19;;49413:37;;;;67652:3;67637:19;;67623:616::o;68246:333::-;-1:-1;;;;;89988:54;;;;40288:45;;68565:2;68550:18;;49413:37;68401:2;68386:18;;68372:207::o;68586:432::-;-1:-1;;;;;89988:54;;;;40288:45;;68927:2;68912:18;;49413:37;;;;88007:13;88000:21;69004:2;68989:18;;49195:34;68763:2;68748:18;;68734:284::o;69025:558::-;-1:-1;;;;;89988:54;;;;40288:45;;69402:2;69387:18;;49413:37;;;;89907:6;89896:18;69492:2;69477:18;;52381:57;88007:13;88000:21;69569:2;69554:18;;49195:34;69237:3;69222:19;;69208:375::o;69590:517::-;69813:2;69827:47;;;69798:18;;84907:19;;;69590:517;41075:21;84947:14;;;69590:517;41102:291;41127:6;41124:1;41121:13;41102:291;;;84956:4;85:6;72:20;97:33;124:5;97:33;:::i;:::-;-1:-1;;;;;89988:54;40288:45;;86735:12;;;;38348:14;;;;41149:1;41142:9;41102:291;;;41106:14;69880:126;;;;;-1:-1;;;;;87817:5;89988:54;84956:4;70082:9;70078:18;40141:58;69784:323;;;;;;:::o;70114:518::-;70365:2;70379:47;;;70350:18;;;84907:19;;;70114:518;;84947:14;;;;46207:21;70114:518;46234:421;46259:6;46256:1;46253:13;46234:421;;;10484:6;10471:20;10496:55;10545:5;10496:55;:::i;:::-;89267:45;89306:5;89267:45;:::i;:::-;52114:70;;87331:12;;;72:20;97:33;72:20;97:33;:::i;:::-;-1:-1;;;;;89988:54;60293:14;;;40288:45;60405:16;;;15747:20;60476:14;;;49413:37;60599:4;60555:50;60588:16;;;60409:5;60555:50;:::i;:::-;60611:63;60599:4;60663:3;60659:14;60645:12;60611:63;:::i;:::-;;;60793:4;60741:58;60793:4;60786:5;60782:16;60775:5;60741:58;:::i;:::-;60805:79;60793:4;60873:3;60869:14;60855:12;60805:79;:::i;:::-;-1:-1;;39555:4;39546:14;;;;84511;;;;;46281:1;46274:9;46234:421;;;-1:-1;70432:190;;70336:296;-1:-1;;;;;;;70336:296::o;70639:494::-;70878:2;70892:47;;;82794:12;;70863:18;;;84907:19;;;70639:494;;70878:2;84947:14;;;;;;81642;;;70639:494;47319:353;47344:6;47341:1;47338:13;47319:353;;;47411:6;47405:13;61194:16;61188:23;89267:45;89306:5;89267:45;:::i;:::-;52114:70;;61369:16;;;61363:23;-1:-1;;;;;89988:54;61455:14;;;40288:45;61540:16;;;61534:23;61611:14;;;49413:37;61707:4;61696:16;;;61690:23;61719:63;61767:14;;;61690:23;61719:63;:::i;:::-;-1:-1;;61866:4;61855:16;;;61849:23;;61878:79;61942:14;;;61849:23;61878:79;:::i;:::-;-1:-1;;39861:4;39852:14;;;;;83707;;;;47366:1;47359:9;47319:353;;;-1:-1;70945:178;;70849:284;-1:-1;;;;;;;70849:284::o;71140:768::-;;49443:5;49420:3;49413:37;-1:-1;;;;;89999:42;87817:5;89988:54;71598:2;71587:9;71583:18;40288:45;89999:42;87817:5;89988:54;71697:2;71686:9;71682:18;40288:45;;71433:3;71734:2;71723:9;71719:18;71712:48;71774:124;71433:3;71422:9;71418:19;71884:6;71774:124;:::i;:::-;71766:132;71404:504;-1:-1;;;;;;71404:504::o;73196:353::-;73361:2;73346:18;;89267:45;89306:5;89267:45;:::i;:::-;51508:60;;;73535:2;73520:18;49413:37;73332:217;:::o;73556:464::-;73749:2;73734:18;;89267:45;89306:5;89267:45;:::i;:::-;51508:60;;;73923:2;73908:18;;49413:37;;;;74006:2;73991:18;;;49413:37;73720:300;:::o;74027:612::-;;89267:45;89306:5;89267:45;:::i;:::-;91765:36;51668:3;51661:60;74270:2;74398;74387:9;74383:18;74376:48;74438:108;74270:2;74259:9;74255:18;74532:6;74438:108;:::i;:::-;74430:116;;49443:5;74625:2;74614:9;74610:18;49413:37;74241:398;;;;;;:::o;74646:1568::-;;75235:3;;75224:9;75220:19;89542:46;89582:5;89542:46;:::i;:::-;51805:61;;;75365:2;75350:18;;;75343:48;;;;82794:12;;84907:19;;;;84947:14;;;;;45054:17;;;45045:27;;;;;;81642:14;;;-1:-1;45213:423;45238:6;45235:1;45232:13;45213:423;;;45290:20;;;;;45278:33;;45339:13;;54040:23;;49413:37;;54208:16;;;54202:23;54279:14;;;49413:37;54382:4;54371:16;;;54365:23;54442:14;;;49413:37;54538:4;54527:16;;;54521:23;54598:14;;;49413:37;54696:4;54685:16;;;54679:23;53972:4;54722:14;;;54715:38;;;54679:23;54768:71;53963:14;;;54679:23;54768:71;:::i;:::-;45615:14;;;;45359:134;-1:-1;;;83707:14;;;;45260:1;45253:9;45213:423;;;45217:14;;;;75623:9;75617:4;75613:20;54382:4;75597:9;75593:18;75586:48;75648:133;75776:4;75767:6;75759;75648:133;:::i;:::-;75640:141;;;75792:138;54538:4;75915:9;75911:18;75902:6;75792:138;:::i;:::-;75979:9;75973:4;75969:20;75963:3;75952:9;75948:19;75941:49;76004:116;76115:4;76106:6;76098;76004:116;:::i;:::-;75996:124;;;49443:5;76199:3;76188:9;76184:19;49413:37;75206:1008;;;;;;;;;;;:::o;76221:416::-;76421:2;76435:47;;;52675:2;76406:18;;;84907:19;52711:18;84947:14;;;52691:39;52749:12;;;76392:245::o;76644:416::-;76844:2;76858:47;;;53000:2;76829:18;;;84907:19;53036:33;84947:14;;;53016:54;53089:12;;;76815:245::o;77067:416::-;77267:2;77281:47;;;53645:2;77252:18;;;84907:19;53681:27;84947:14;;;53661:48;53728:12;;;77238:245::o;77490:850::-;;77823:3;77845:17;77838:47;58634:16;58628:23;77823:3;77812:9;77808:19;49413:37;58799:4;58792:5;58788:16;58782:23;89542:46;89582:5;89542:46;:::i;:::-;58870:14;;;51805:61;58967:4;58956:16;;58950:23;-1:-1;;;;;89988:54;;;59042:14;;;50851:65;59140:4;59129:16;;59123:23;89988:54;59215:14;;;50851:65;59311:4;59300:16;;59294:23;59371:14;;;49413:37;59469:4;59458:16;;59452:23;58560:4;59495:14;;;59488:38;59541:71;58551:14;;;59452:23;59541:71;:::i;:::-;77891:122;;;78024:138;58799:4;78147:9;78143:18;78134:6;78024:138;:::i;:::-;59469:4;78226:19;;49413:37;;;;58560:4;78310:19;49413:37;77794:546;;-1:-1;;77794:546::o;78347:222::-;49413:37;;;78474:2;78459:18;;78445:124::o;78576:333::-;49413:37;;;-1:-1;;;;;89988:54;78895:2;78880:18;;40288:45;78731:2;78716:18;;78702:207::o;78916:444::-;49413:37;;;-1:-1;;;;;89988:54;;;79263:2;79248:18;;40288:45;89988:54;79346:2;79331:18;;40288:45;79099:2;79084:18;;79070:290::o;79367:256::-;79429:2;79423:9;79455:17;;;79530:18;79515:34;;79551:22;;;79512:62;79509:2;;;79587:1;;79577:12;79509:2;79429;79596:22;79407:216;;-1:-1;79407:216::o;79630:319::-;;79804:18;79796:6;79793:30;79790:2;;;-1:-1;;79826:12;79790:2;-1:-1;79871:4;79859:17;;;79924:15;;79727:222::o;86635:119::-;;85:6;72:20;97:33;124:5;97:33;:::i;92628:268::-;92693:1;92700:101;92714:6;92711:1;92708:13;92700:101;;;92781:11;;;92775:18;92762:11;;;92755:39;92736:2;92729:10;92700:101;;;92816:6;92813:1;92810:13;92807:2;;;-1:-1;;92693:1;92863:16;;92856:27;92677:219::o;93171:103::-;93252:1;93245:5;93242:12;93232:2;;93258:9;93391:104;93473:1;93466:5;93463:12;93453:2;;93479:9;93622:117;-1:-1;;;;;93709:5;89988:54;93684:5;93681:35;93671:2;;93730:1;;93720:12;93886:111;93967:5;88007:13;88000:21;93945:5;93942:32;93932:2;;93988:1;;93978:12;95630:106;95711:1;95704:5;95701:12;95691:2;;95727:1;;95717:12"},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256,uint256,(uint256,uint256)[])":"18369446","exitPool(bytes32,uint8,address,address,(address[],uint256[],bytes,bool),(uint256,uint256)[])":"d80952d5","gaugeClaimRewards(address[])":"0e248fea","gaugeDeposit(address,address,address,uint256)":"7bc008f5","gaugeMint(address[],uint256)":"3f85d390","gaugeSetMinterApproval(bool,address,uint256,uint8,bytes32,bytes32)":"8c57198b","gaugeWithdraw(address,address,address,uint256)":"65ca4804","getChainedReferenceValue(uint256)":"5967b696","getEntrypoint()":"7fd0e5d5","getVault()":"8d928af8","joinPool(bytes32,uint8,address,address,(address[],uint256[],bytes,bool),uint256,uint256)":"8fe4624f","manageUserBalance((uint8,address,uint256,address,address)[],uint256)":"ecc02637","peekChainedReferenceValue(uint256)":"f3cab685","setChainedReferenceValue(uint256,uint256)":"c518e531","setRelayerApproval(address,bool,bytes)":"80db15bd","stakeETH(address,uint256,uint256)":"2cbec84e","stakeETHAndWrap(address,uint256,uint256)":"1089e5e3","swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256,uint256,uint256)":"2e6272ea","unwrapAaveStaticToken(address,address,address,uint256,bool,uint256)":"7ab6e03c","unwrapERC4626(address,address,address,uint256,uint256)":"efe69108","unwrapReaperVaultToken(address,address,address,uint256,uint256)":"d293f290","unwrapUnbuttonToken(address,address,address,uint256,uint256)":"611b90dd","unwrapWstETH(address,address,uint256,uint256)":"db4c0e91","vaultPermit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"8d64cfbc","vaultPermitDAI(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)":"959fc17a","wrapAaveDynamicToken(address,address,address,uint256,bool,uint256)":"433b0865","wrapERC4626(address,address,address,uint256,uint256)":"6d307ea8","wrapReaperVaultToken(address,address,address,uint256,uint256)":"e8210e3c","wrapStETH(address,address,uint256,uint256)":"1c982441","wrapUnbuttonToken(address,address,address,uint256,uint256)":"abf6d399"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"wstETH\",\"type\":\"address\"},{\"internalType\":\"contract IBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"ChainedReferenceValueRead\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"int256[]\",\"name\":\"limits\",\"type\":\"int256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"batchSwap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum VaultActions.PoolKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"gaugeClaimRewards\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"gaugeDeposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"gaugeMint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"gaugeSetMinterApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"gaugeWithdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"getChainedReferenceValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEntrypoint\",\"outputs\":[{\"internalType\":\"contract IBalancerRelayer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum VaultActions.PoolKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"joinPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.UserBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct IVault.UserBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manageUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setChainedReferenceValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"authorisation\",\"type\":\"bytes\"}],\"name\":\"setRelayerApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"stakeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"stakeETHAndWrap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStaticATokenLM\",\"name\":\"staticToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapAaveStaticToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapERC4626\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IReaperTokenVault\",\"name\":\"vaultToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapReaperVaultToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUnbuttonToken\",\"name\":\"wrapperToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapUnbuttonToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapWstETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Permit\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"vaultPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20PermitDAI\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"vaultPermitDAI\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStaticATokenLM\",\"name\":\"staticToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapAaveDynamicToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapERC4626\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IReaperTokenVault\",\"name\":\"vaultToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapReaperVaultToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapStETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUnbuttonToken\",\"name\":\"wrapperToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapUnbuttonToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approveVault(address,uint256)\":{\"details\":\"This is needed to avoid having to send intermediate tokens back to the user\"},\"peekChainedReferenceValue(uint256)\":{\"details\":\"It does not alter the reference (even if it's marked as temporary).\"},\"unwrapUnbuttonToken(address,address,address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of wrapped tokens to be burnt for underlying tokens.\",\"outputReference\":\"Chained output reference.\",\"sender\":\"The address of recepient.\",\"wrapperToken\":\"The address of the wrapper.\"}},\"wrapUnbuttonToken(address,address,address,uint256,uint256)\":{\"params\":{\"outputReference\":\"Chained output reference.\",\"sender\":\"The address of recepient.\",\"uAmount\":\"The underling token amount to be deposited into the wrapper.\",\"wrapperToken\":\"The address of the wrapper.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveVault(address,uint256)\":{\"notice\":\"Approves the Vault to use tokens held in the relayer\"},\"peekChainedReferenceValue(uint256)\":{\"notice\":\"Returns the amount referenced by chained reference `ref`.\"},\"setRelayerApproval(address,bool,bytes)\":{\"notice\":\"Sets whether a particular relayer is authorised to act on behalf of the user\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockBatchRelayerLibrary.sol\":\"MockBatchRelayerLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0x1e5bca6b4fb897adc2458f65aa7abed8499dcf146ac5872c62544d91516867cb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://faa81254fe029b7ccd05635d6919da30bcb2114026996d10f6b51fc0e1f5b850\",\"dweb:/ipfs/Qmax3d2kq51xjt6hjYgskuXSrsB3fBZ4LAxBPRDDzbg8XD\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0x286a4b1cb4a632954e58c68baac671fb0dcbd139c5a353b0419088b0de40477c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0b57ab7eadc573d8d23b3668b90412e65182beea79726c1a1b8cb57f76abc74a\",\"dweb:/ipfs/QmfNe6Uu4S4xMDzMktJnGz92MT6zVENi3Rye2AazUcrLL4\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0x6975f1e2199b1d9e4fff7133f9e9ab652e2f378d38551d33393eec50f459574a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2c4b81b8bb50d58afee844cdc06a04bca72b379f51eda3289a9cc4ff97a80dfc\",\"dweb:/ipfs/QmR1b9e6Ku7H3ea4yBGmUznqabtioTkktRWvhZFgRUZWy4\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0x3b9e1e7098293244e9e4b1b1e26f973949bea15e2477115fadf4b5157fcab9de\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cc5542e3a2546434ba0de87e5a3937ef0a7816cda2bc25eaaa7e8ddba2d4e281\",\"dweb:/ipfs/QmNZDUex4e3TdkxLrEyqEyusBpC4xfETwvgrqHUEyGkYNE\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0xfdbd854a6467bd4aa3523b47c030858b505f87d39abdfb6e97f020a9c303fd17\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4465839b424de5a8f1b83b1f2a689076ce3d99efe2528336f32945191257abcc\",\"dweb:/ipfs/QmSVS4K9f2UMDpqXBg82r2bUeutUihk1hmYuCvw9iEeLWk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xabf0bcc23e4f5fa8e85af800f53c925e26e104ea13e238ef6762ca8221b382a4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c71e3a291a6343ad77f7b4fb4fe1df4519e6a8b6e9335743f288154ea688584f\",\"dweb:/ipfs/QmSmZ7Jrqw9reCab8H9RHuDPduiXh7YUJY1UgsMYxZ26Zp\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x01a7009af37017ca4e06fec645da25e6a5c75b4c3738a04bd227f92742cfb7ae\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae3267797ca92f4e8286a9f7fc6d59ac03d93046f544ec6740e80c100f4ebe4a\",\"dweb:/ipfs/QmUGa72iyfk54ex9qpHcgpbUcHbHDnghy136nZBkbmEZu5\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0x797adbaaae6b7c50752e62bec5e56b554cdbf1f48b1cbd062f7304ea77330f94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c811af7ea4517079e04d5e53e05b871e838f122faf70e3b47d426204b3c79bde\",\"dweb:/ipfs/QmY2oNRdUCswLSDcptE5zkuiyGg1JRk1YP5zojPqFSWLa4\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0x3d362ad70a19a0307bc9af2b053c4de85a4e0aacf1eb6b1fb5083873b8a62045\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3b141dcb49084bd633c4b95765c57e760deadf484a599e7f8fcbb74a46febe3f\",\"dweb:/ipfs/QmQz9P1bWh8mNQUxz5jdqNqwS226osyCPbQA8DznFspf4f\"]},\"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol\":{\"keccak256\":\"0xc82d42ae8b0d8beecd14924f2719b24bc602d1e8df4365dfb0cc3f63a32cb179\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a61895cdecdc5fe04ad2495dfc80a4ce438b4d42d21995739e3e225cbb786582\",\"dweb:/ipfs/QmSYVb7NwdPMXxdsvGYhWyvKNbdrP4fWRGvsygdCj5SZMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol\":{\"keccak256\":\"0xe57447223cab81039085813da021bd12552b1b27f3c7c03031b87f39b390bec3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c0a50b3ea4244e80eb180d4e6b94e7a56c9bee394ac89d085b19ff194fc10dbe\",\"dweb:/ipfs/QmYa7jzRRhjMLqrKrL8bCDX3rc5RU2rzhZ7Df7Z5r6S6L9\"]},\"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol\":{\"keccak256\":\"0x6ea477094e5c51c7f6bc107e13503fbe18db2b22b61909a2ff08106e374b0e72\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1eb6e93ae0e2758c85121bcd61226211a1f1996944c1849eafc8d30e5f7364af\",\"dweb:/ipfs/QmcTJAa437Mk9YxiXWnhKP2sVYHFEgwrjnrA6ubzJtuhFV\"]},\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":{\"keccak256\":\"0x77711c8f7dffb3ec7c6ade6aa8130dfcf905920e1f4de2cc14a8869f356c1e7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0d7b48b6172bc6ece5bb47acab7541c0e7bafe0c05b77c36231fd9d0563669ff\",\"dweb:/ipfs/QmQoqo3qshSWXD3PwkhEoLzfcZEv56zpYKAtzXEyh8h3oo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xfd687ced203d2c6da8189792e1719a5182faf45956129388b231ee76740b99a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://581aa664e84e950cd9bb747bf6022867db63c64f67d9556a86b5f04f871c2c5d\",\"dweb:/ipfs/QmRa6EEV3LXJaHzymztiLqyeAzmE4jAgBEEi3mi8R5cfFa\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol\":{\"keccak256\":\"0xcfcb9742bedeceeebb814066f8046522ae6e6440ea87bc265f48db345f586493\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b2a25f7b7621273d0567400ba318317d738cad231aeac8aecd3051d1a484a7c1\",\"dweb:/ipfs/QmeWczGrss48e7hnBkFHThExBnZW57nPUWSLsbS3yiw8o3\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xffe929ce55ef0cbdcc60eee8bc9375c295757ad13afe3d757646538aa0429ff5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90091ad3a860b0baa930d9b4083b503eb9ce2d222f738ce3b009d434271a27ae\",\"dweb:/ipfs/QmeQxy2YHbeumMXxKqEnXF7pGw2Ke43cHzttG59WYHibVV\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol\":{\"keccak256\":\"0x5a824b0b4eef59b949b7ed26f74a5ad6a636b8ac093bde3a5c7b8a4e1fb1a6c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a89b0cf610d119abd21b5fd8a44ce2641b3ff99d20ace39609ce8df361686597\",\"dweb:/ipfs/QmZzyKTWdEftt1oJZEoj9zgXACTLZNvwQJmFZQQQrzfDgn\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":{\"keccak256\":\"0x00d423628736cf6e571187b6327a8ab9fdf947283582345cc6048ca3086b79a0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://919890e34754f13e43d3bc3f6f07674c4db0f2faf4fe7d1e8246d5513628ac72\",\"dweb:/ipfs/QmSqhMvXntJFgP7EmfZKrVG8t3oQqweYg4WWnV1JNnFUTu\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\":{\"keccak256\":\"0x82df6d6c71a197051483edc2854de4aff2318d9336647706240af5bc9b70f544\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8f40c60825147183ed5b35d09c16d2eeaf5955168e4a5dd3343fa8869090aa97\",\"dweb:/ipfs/QmY1rD9qjoh6K3T4Bgfo2QFt8jTTJPdY6yV2RkGgDRsq3Z\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x2e5cd2e8ce3f3380853a42af5891f787caa27d4aa5f5de0cd18f2f4ecf085f9c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae8aad1c72dd6ad70d9377d8b025af8ff9648fb99fcac4ed101c3ffe9d74c082\",\"dweb:/ipfs/QmQ5A29nCNj72ckV23cCEANomh5tt5UJkL4938GLYPEn4Q\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\":{\"keccak256\":\"0x63ab39ba66fa4d4dd481433cb7e38b3f4b4ef70f93849baa4dbfb505b0a32672\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://96117b89d70c2c7d33072f8d86a7193f22015493e568d0e13e9fdb15b7f912bb\",\"dweb:/ipfs/QmahkTXJxVrCozp3ivzEyh562Fnz3z5oetNiy9AmjugoJr\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5370e6567e4765d26437ff0904ae3244e57a19b20155079b34c4c292d003e521\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://309377ce43e8fb09c8ae998612a1556b9b5cbcca2da71dd7c786cf0480f5dc92\",\"dweb:/ipfs/QmeUJKtRBtFdLK7WHbTAMn4ZuBoiSXYX5wZFPZ46oqpkv8\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xa073b9e057a346ac1fdab1b4c348799d199b44daf1553da3fb3301d5c038282b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://640d27c0ea440a2b9fa3312d92d7eb63a68dd1a2ebb76ca0c26920986b05a1d1\",\"dweb:/ipfs/QmRQ7xdHQ7kvfY3XhmRoKVBoUET2V1LRwiN4TGnLy1MZrU\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x5c942367601af6fcff9f54774cccd3dc0e72d98becc69e5c0eb6bcf053d486ab\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://edfe93fb7cc70bac2f5deedfe9558b8f5c07ad94d272d2e16d88948aa46fb713\",\"dweb:/ipfs/QmeCP598vDn6rTHQuWUbUVnHn2y8GJLmtoJwhaga8znHJm\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\":{\"keccak256\":\"0xe34a73f883e96c7fef1750edc94b7940f0ac0fd3b43feae13cb7cde0da130c66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://027cf01075479e0a51f17678431e215d17f23773c5cb66c59ddaa6d052f5cbda\",\"dweb:/ipfs/QmPFaTfNLoKkufU6n9Q8n1k2R2WCT1vTRosNXJS4sm8WxQ\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xa50a6030616fb98d27463df96d3bd9386c157ecae82c7a71be7e0b7ba778d02f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51dbb7eeb98561aaf6cf6b48825a64a725f5d1d63cfd888711c4cb1468f52fc4\",\"dweb:/ipfs/Qmc2o8dUCBuu8PxJPrPufHmoZ6DGdMPoaXcruUqr3WuCLA\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/BatchRelayerLibrary.sol\":{\"keccak256\":\"0xb6a0e73bff14c8e165dea3d9ec704b5876af02b4ddc4ec3fc564bf7a0cf83ce1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://529ebe5ce29213d096235bea2e4c1c789145d26f4fbf7cabe50ea4c1833282a9\",\"dweb:/ipfs/QmPwrbLNXM4JzTAwo8KXhjonxazqyCAoRYHTmCD9zHef8G\"]},\"contracts/relayer/AaveWrapping.sol\":{\"keccak256\":\"0x07b2d4aa090776d6e710b18a4b1a5d5f165aa535485698eaa1c68b112807bc33\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://aa1ab801724fd42dc74b2e5871a7e6c22ffbfb19676638408abb7323335734cf\",\"dweb:/ipfs/QmPv9HHsH1MtShXSqgK8GKWsfFDCUAFRAnPwyJ51bsyhJw\"]},\"contracts/relayer/BalancerRelayer.sol\":{\"keccak256\":\"0xb69401485af333ad66e7cc091da40d25354de1870f64584d017909da9f8a8e7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e34ee5869335a6fede8b62e5ee6f81bd714b88f58fe4bf4d991d44372333627d\",\"dweb:/ipfs/QmQvEA5R5HXbyPYYC3GEeDwqcBAfsU5kLvRiNByyJqVXrx\"]},\"contracts/relayer/BaseRelayerLibrary.sol\":{\"keccak256\":\"0x52c5a0fa32cb38dfe008f6170491ca81fe394cba0fa9d6cbd13ac12fc9b2471a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8716ef72fa4f61bd91d450d5a29771e346e8ed59f30b6a74b53c6d59c0212e03\",\"dweb:/ipfs/QmTqGY7JoMF7WBNzgPFSfhFS3QkYRwEUJq6UJnTxNSnvuJ\"]},\"contracts/relayer/ERC4626Wrapping.sol\":{\"keccak256\":\"0x17714e11553f44622d97ffc851175ea16f9d70f76b8dd57edfeb9ab26188050e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af9ef5d055e44410a74d45793ea10a165ba6fb7c0982d4b196b0fd05a420c1f5\",\"dweb:/ipfs/QmZD8HPpT87G87AvM3bRpadSWJB4gEHb4dUoU6ZpY8NxJp\"]},\"contracts/relayer/GaugeActions.sol\":{\"keccak256\":\"0x9dc6be73ee966236a21296cacafb9bf7447245c090d056ae773a8b1bd6b3f5c5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fb5257cbd5c63cfbc51f1bbe854c86005a175cd8ef8328f6212ea2ef8d62d338\",\"dweb:/ipfs/QmQhLBUbgucisYiSshMxZotDq23a1Tzwq86mRi6xPQLcZD\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]},\"contracts/relayer/LidoWrapping.sol\":{\"keccak256\":\"0xc266b469754fbca3e3e965bb37cc1b8aaba351875ebb6b78146d9780c8c220a9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15ff53a01778985bf203a3ec97f502cf43f7d9ed3792742e24ef0cc4d583a91f\",\"dweb:/ipfs/QmbEVLaL2Fc3v9ak5RKyLZGQ7S8JNsY8beQkerGmFiVL7L\"]},\"contracts/relayer/ReaperWrapping.sol\":{\"keccak256\":\"0xf0194c405041c6fc22c51490bf1b1ad827eec697d17399fdaff28fd6ee38de0d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4f82e83a1be01b9da7c0ad4ebf0e4114be60e08a8e4230f346644ca78645c3f4\",\"dweb:/ipfs/QmZzrxgtYrh7ruxB3jW3RcXxgB7rmpWWsUQsnZuo1gLk9N\"]},\"contracts/relayer/UnbuttonWrapping.sol\":{\"keccak256\":\"0x3662f72fb154f14480236ddc02b20ac6f2d6668d7ee496c1f1f6d1939733d337\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://aa905d62594d8fb29d7689dd00f32ed84db63d8eb759fa182d77a9888e9e8bb5\",\"dweb:/ipfs/QmQ6BHqFGeHpijUKjCmgWe7jyQcr6kjSTahzbUvs5EbEp8\"]},\"contracts/relayer/VaultActions.sol\":{\"keccak256\":\"0x777d58a20e0e7f71eea9dc59f936f78528c02037a47076ad0747a6cb15e2e42b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://837ae5259458637d2dcb23b1f0d7bda936a50745cb36a1d4211f2dc50f3caaaf\",\"dweb:/ipfs/QmaS4wwWtbZVkG8bVqSWRHn47MPfnRHL8eUfd8Z8FchAYC\"]},\"contracts/relayer/VaultPermit.sol\":{\"keccak256\":\"0xef4705f6cdd5833cfff67df26d4b1c360b153d59429064f005b397f2a5a1b9b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9cad4c5a1c93580fdf0f39077b1efa48d14af4bce872ea89aea2ad58fd9592b2\",\"dweb:/ipfs/QmTHkG1hQugzT9B7D1nfLbD96TDiJ9YXSemVQFJX4T8agZ\"]},\"contracts/test/MockBatchRelayerLibrary.sol\":{\"keccak256\":\"0xc5403261d1bd25c719258f4c5e2dc7d39b6e6623113ef956b80a706353a4443d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7c2d847eb4d4d5cc176b962fd303a821f029d446bcb56e3dbdcfe01626545597\",\"dweb:/ipfs/QmfZtYZBWYkstEcj43VhM8QaXXCMzbtBTjLjFq11K1AaBP\"]}},\"version\":1}"}},"contracts/test/MockStETH.sol":{"MockStETH":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"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":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EthStaked","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":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":"amount","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","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":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"submit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e06040523480156200001157600080fd5b506040516200153738038062001537833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b50604081815260209283015182820190915260018252603160f81b838301528651909450869350859285928592839283918791620001dc9160039185019062000267565b508051620001f290600490602084019062000267565b50506005805460ff19166012179055508151602092830120608052805191012060a052507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c052620002458162000251565b50505050505062000303565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002aa57805160ff1916838001178555620002da565b82800160010185558215620002da579182015b82811115620002da578251825591602001919060010190620002bd565b50620002e8929150620002ec565b5090565b5b80821115620002e85760008155600101620002ed565b60805160a05160c0516112076200033060003980610edd525080610f1f525080610efe52506112076000f3fe60806040526004361061015f5760003560e01c806379cc6790116100c0578063a457c2d711610074578063d505accf11610059578063d505accf14610591578063dd62ed3e146105fc578063ed24911d146106445761015f565b8063a457c2d714610505578063a9059cbb1461054b5761015f565b806390193b7c116100a557806390193b7c1461047d57806395d89b41146104bd578063a1903eab146104d25761015f565b806379cc6790146103f75780637ecebe001461043d5761015f565b80633644e5151161011757806340c10f19116100fc57806340c10f191461034557806342966c681461038d57806370a08231146103b75761015f565b80633644e515146102ea57806339509351146102ff5761015f565b806318160ddd1161014857806318160ddd1461024857806323b872dd1461026f578063313ce567146102bf5761015f565b806306fdde0314610164578063095ea7b3146101ee575b600080fd5b34801561017057600080fd5b50610179610659565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101b357818101518382015260200161019b565b50505050905090810190601f1680156101e05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101fa57600080fd5b506102346004803603604081101561021157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561070d565b604080519115158252519081900360200190f35b34801561025457600080fd5b5061025d610723565b60408051918252519081900360200190f35b34801561027b57600080fd5b506102346004803603606081101561029257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610729565b3480156102cb57600080fd5b506102d461078a565b6040805160ff9092168252519081900360200190f35b3480156102f657600080fd5b5061025d610793565b34801561030b57600080fd5b506102346004803603604081101561032257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107a2565b34801561035157600080fd5b5061038b6004803603604081101561036857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107e5565b005b34801561039957600080fd5b5061038b600480360360208110156103b057600080fd5b50356107f3565b3480156103c357600080fd5b5061025d600480360360208110156103da57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610800565b34801561040357600080fd5b5061038b6004803603604081101561041a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610828565b34801561044957600080fd5b5061025d6004803603602081101561046057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661085e565b34801561048957600080fd5b5061025d600480360360208110156104a057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661086f565b3480156104c957600080fd5b50610179610897565b61025d600480360360208110156104e857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610916565b34801561051157600080fd5b506102346004803603604081101561052857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561095c565b34801561055757600080fd5b506102346004803603604081101561056e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109a2565b34801561059d57600080fd5b5061038b600480360360e08110156105b457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356109af565b34801561060857600080fd5b5061025d6004803603604081101561061f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610a84565b34801561065057600080fd5b5061025d610abc565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107035780601f106106d857610100808354040283529160200191610703565b820191906000526020600020905b8154815290600101906020018083116106e657829003601f168201915b5050505050905090565b600061071a338484610ac6565b50600192915050565b60025490565b6000610736848484610b35565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461078091869161077b908661019e610c5e565b610ac6565b5060019392505050565b60055460ff1690565b600061079d610abc565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161071a91859061077b9086610c74565b6107ef8282610c8d565b5050565b6107fd3382610d46565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6000610842826101a161083b8633610a84565b9190610c5e565b905061084f833383610ac6565b6108598383610d46565b505050565b60006108698261086f565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107035780601f106106d857610100808354040283529160200191610703565b60006109223334610c8d565b6040805134815290517f5ac3d75f987a73cee9a456a277139319eee6559e3d027a360d2fc37ac93e74a39181900360200190a15034919050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161071a91859061077b908661019f610c5e565b600061071a338484610b35565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886109de8c61086f565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610a6f8882610a66878787610e36565b886101f8610e75565b610a7a888888610ac6565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b600061079d610ed9565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610b5973ffffffffffffffffffffffffffffffffffffffff84161515610198610fa4565b610b7d73ffffffffffffffffffffffffffffffffffffffff83161515610199610fa4565b610b88838383610859565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610bbb90826101a0610c5e565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610bf79082610c74565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610c6d8484111583610fa4565b5050900390565b6000828201610c868482101583610fa4565b9392505050565b610c9960008383610859565b610cb3610cae82610ca8610723565b90610c74565b610fb2565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610ce39082610c74565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610d6a73ffffffffffffffffffffffffffffffffffffffff8316151561019b610fa4565b610d7682600083610859565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610da990826101b2610c5e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610de4610cae82610dde610723565b90610fb7565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610e8085610fc5565b9050610e96610e9087838761102c565b83610fa4565b610ea5428410156101b8610fa4565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610f4661113e565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816107ef576107ef81611142565b600255565b6000610c8683836001610c5e565b6000610fcf610ed9565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061103e82516041146101b9610fa4565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156110b7573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061113257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526107fd917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220372e7c9f3dfad58e433bfe71dfe9d982d55877da3c9ab68e9df96a10d7075ca764736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1537 CODESIZE SUB DUP1 PUSH3 0x1537 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP3 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL DUP4 DUP4 ADD MSTORE DUP7 MLOAD SWAP1 SWAP5 POP DUP7 SWAP4 POP DUP6 SWAP3 DUP6 SWAP3 DUP6 SWAP3 DUP4 SWAP3 DUP4 SWAP2 DUP8 SWAP2 PUSH3 0x1DC SWAP2 PUSH1 0x3 SWAP2 DUP6 ADD SWAP1 PUSH3 0x267 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1F2 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x267 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x80 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0xA0 MSTORE POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH3 0x245 DUP2 PUSH3 0x251 JUMP JUMPDEST POP POP POP POP POP POP PUSH3 0x303 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x2AA JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x2DA JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x2DA JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x2DA JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x2BD JUMP JUMPDEST POP PUSH3 0x2E8 SWAP3 SWAP2 POP PUSH3 0x2EC JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2E8 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2ED JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH2 0x1207 PUSH3 0x330 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xEDD MSTORE POP DUP1 PUSH2 0xF1F MSTORE POP DUP1 PUSH2 0xEFE MSTORE POP PUSH2 0x1207 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x15F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79CC6790 GT PUSH2 0xC0 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x591 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5FC JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x644 JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x505 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x54B JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x90193B7C GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0xA1903EAB EQ PUSH2 0x4D2 JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x43D JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x40C10F19 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x345 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x38D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x3B7 JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x2EA JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2FF JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x148 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2BF JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1EE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x659 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1E0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x211 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x70D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x723 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x729 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D4 PUSH2 0x78A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x793 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x351 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x368 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7E5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x800 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x41A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x828 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x85E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x86F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x897 JUMP JUMPDEST PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x916 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x95C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x9AF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x61F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x650 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0xABC JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x703 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6D8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x703 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6E6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71A CALLER DUP5 DUP5 PUSH2 0xAC6 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x736 DUP5 DUP5 DUP5 PUSH2 0xB35 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x780 SWAP2 DUP7 SWAP2 PUSH2 0x77B SWAP1 DUP7 PUSH2 0x19E PUSH2 0xC5E JUMP JUMPDEST PUSH2 0xAC6 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79D PUSH2 0xABC JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x71A SWAP2 DUP6 SWAP1 PUSH2 0x77B SWAP1 DUP7 PUSH2 0xC74 JUMP JUMPDEST PUSH2 0x7EF DUP3 DUP3 PUSH2 0xC8D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x7FD CALLER DUP3 PUSH2 0xD46 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x842 DUP3 PUSH2 0x1A1 PUSH2 0x83B DUP7 CALLER PUSH2 0xA84 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xC5E JUMP JUMPDEST SWAP1 POP PUSH2 0x84F DUP4 CALLER DUP4 PUSH2 0xAC6 JUMP JUMPDEST PUSH2 0x859 DUP4 DUP4 PUSH2 0xD46 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x869 DUP3 PUSH2 0x86F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x703 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6D8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x703 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x922 CALLER CALLVALUE PUSH2 0xC8D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLVALUE DUP2 MSTORE SWAP1 MLOAD PUSH32 0x5AC3D75F987A73CEE9A456A277139319EEE6559E3D027A360D2FC37AC93E74A3 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP CALLVALUE SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x71A SWAP2 DUP6 SWAP1 PUSH2 0x77B SWAP1 DUP7 PUSH2 0x19F PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71A CALLER DUP5 DUP5 PUSH2 0xB35 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0x9DE DUP13 PUSH2 0x86F JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xA6F DUP9 DUP3 PUSH2 0xA66 DUP8 DUP8 DUP8 PUSH2 0xE36 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xA7A DUP9 DUP9 DUP9 PUSH2 0xAC6 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79D PUSH2 0xED9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xB59 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xFA4 JUMP JUMPDEST PUSH2 0xB7D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xFA4 JUMP JUMPDEST PUSH2 0xB88 DUP4 DUP4 DUP4 PUSH2 0x859 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xBBB SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xC5E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xBF7 SWAP1 DUP3 PUSH2 0xC74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC6D DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xFA4 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xC86 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xFA4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xC99 PUSH1 0x0 DUP4 DUP4 PUSH2 0x859 JUMP JUMPDEST PUSH2 0xCB3 PUSH2 0xCAE DUP3 PUSH2 0xCA8 PUSH2 0x723 JUMP JUMPDEST SWAP1 PUSH2 0xC74 JUMP JUMPDEST PUSH2 0xFB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xCE3 SWAP1 DUP3 PUSH2 0xC74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xD6A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xFA4 JUMP JUMPDEST PUSH2 0xD76 DUP3 PUSH1 0x0 DUP4 PUSH2 0x859 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xDA9 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xC5E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xDE4 PUSH2 0xCAE DUP3 PUSH2 0xDDE PUSH2 0x723 JUMP JUMPDEST SWAP1 PUSH2 0xFB7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE80 DUP6 PUSH2 0xFC5 JUMP JUMPDEST SWAP1 POP PUSH2 0xE96 PUSH2 0xE90 DUP8 DUP4 DUP8 PUSH2 0x102C JUMP JUMPDEST DUP4 PUSH2 0xFA4 JUMP JUMPDEST PUSH2 0xEA5 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xFA4 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xF46 PUSH2 0x113E JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x7EF JUMPI PUSH2 0x7EF DUP2 PUSH2 0x1142 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC86 DUP4 DUP4 PUSH1 0x1 PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFCF PUSH2 0xED9 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x103E DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xFA4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1132 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x7FD SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATACOPY 0x2E PUSH29 0x9F3DFAD58E433BFE71DFE9D982D55877DA3C9AB68E9DF96A10D7075CA7 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"980:465:81:-:0;;;1026:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1026:198:81;;;;;;;;;;-1:-1:-1;1026:198:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1026:198:81;;;;;;;;;;-1:-1:-1;1026:198:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1026:198:81;;;;;;;;;2020:280:49;;;;;;;;;-1:-1:-1;;;2020:280:49;;;;2118:13:50;;1026:198:81;;-1:-1:-1;1136:4:81;;-1:-1:-1;1142:6:81;;1026:198;;1136:4;;;;;;1142:6;;2118:13:50;;:5;;:13;;;;:::i;:::-;-1:-1:-1;2141:17:50;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:50;:14;;-1:-1:-1;;2168:14:50;2180:2;2168:14;;;-1:-1:-1;2100:22:49;;;;;;;2085:37;;2150:25;;;;;2132:43;;-1:-1:-1;2198:95:49;2185:108;;1046:24:59::2;1061:8:::0;1046:14:::2;:24::i;:::-;898:179:::0;;;1026:198:81;;;980:465;;10570:88:50;10630:9;:21;;-1:-1:-1;;10630:21:50;;;;;;;;;;;;10570:88::o;980:465:81:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;980:465:81;;;-1:-1:-1;980:465:81;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"6342":[{"length":32,"start":3838}],"6344":[{"length":32,"start":3871}],"6346":[{"length":32,"start":3805}]},"linkReferences":{},"object":"60806040526004361061015f5760003560e01c806379cc6790116100c0578063a457c2d711610074578063d505accf11610059578063d505accf14610591578063dd62ed3e146105fc578063ed24911d146106445761015f565b8063a457c2d714610505578063a9059cbb1461054b5761015f565b806390193b7c116100a557806390193b7c1461047d57806395d89b41146104bd578063a1903eab146104d25761015f565b806379cc6790146103f75780637ecebe001461043d5761015f565b80633644e5151161011757806340c10f19116100fc57806340c10f191461034557806342966c681461038d57806370a08231146103b75761015f565b80633644e515146102ea57806339509351146102ff5761015f565b806318160ddd1161014857806318160ddd1461024857806323b872dd1461026f578063313ce567146102bf5761015f565b806306fdde0314610164578063095ea7b3146101ee575b600080fd5b34801561017057600080fd5b50610179610659565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101b357818101518382015260200161019b565b50505050905090810190601f1680156101e05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101fa57600080fd5b506102346004803603604081101561021157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561070d565b604080519115158252519081900360200190f35b34801561025457600080fd5b5061025d610723565b60408051918252519081900360200190f35b34801561027b57600080fd5b506102346004803603606081101561029257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610729565b3480156102cb57600080fd5b506102d461078a565b6040805160ff9092168252519081900360200190f35b3480156102f657600080fd5b5061025d610793565b34801561030b57600080fd5b506102346004803603604081101561032257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107a2565b34801561035157600080fd5b5061038b6004803603604081101561036857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107e5565b005b34801561039957600080fd5b5061038b600480360360208110156103b057600080fd5b50356107f3565b3480156103c357600080fd5b5061025d600480360360208110156103da57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610800565b34801561040357600080fd5b5061038b6004803603604081101561041a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610828565b34801561044957600080fd5b5061025d6004803603602081101561046057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661085e565b34801561048957600080fd5b5061025d600480360360208110156104a057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661086f565b3480156104c957600080fd5b50610179610897565b61025d600480360360208110156104e857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610916565b34801561051157600080fd5b506102346004803603604081101561052857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561095c565b34801561055757600080fd5b506102346004803603604081101561056e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109a2565b34801561059d57600080fd5b5061038b600480360360e08110156105b457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356109af565b34801561060857600080fd5b5061025d6004803603604081101561061f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610a84565b34801561065057600080fd5b5061025d610abc565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107035780601f106106d857610100808354040283529160200191610703565b820191906000526020600020905b8154815290600101906020018083116106e657829003601f168201915b5050505050905090565b600061071a338484610ac6565b50600192915050565b60025490565b6000610736848484610b35565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461078091869161077b908661019e610c5e565b610ac6565b5060019392505050565b60055460ff1690565b600061079d610abc565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161071a91859061077b9086610c74565b6107ef8282610c8d565b5050565b6107fd3382610d46565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6000610842826101a161083b8633610a84565b9190610c5e565b905061084f833383610ac6565b6108598383610d46565b505050565b60006108698261086f565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107035780601f106106d857610100808354040283529160200191610703565b60006109223334610c8d565b6040805134815290517f5ac3d75f987a73cee9a456a277139319eee6559e3d027a360d2fc37ac93e74a39181900360200190a15034919050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161071a91859061077b908661019f610c5e565b600061071a338484610b35565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886109de8c61086f565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610a6f8882610a66878787610e36565b886101f8610e75565b610a7a888888610ac6565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b600061079d610ed9565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610b5973ffffffffffffffffffffffffffffffffffffffff84161515610198610fa4565b610b7d73ffffffffffffffffffffffffffffffffffffffff83161515610199610fa4565b610b88838383610859565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610bbb90826101a0610c5e565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610bf79082610c74565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610c6d8484111583610fa4565b5050900390565b6000828201610c868482101583610fa4565b9392505050565b610c9960008383610859565b610cb3610cae82610ca8610723565b90610c74565b610fb2565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610ce39082610c74565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610d6a73ffffffffffffffffffffffffffffffffffffffff8316151561019b610fa4565b610d7682600083610859565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610da990826101b2610c5e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610de4610cae82610dde610723565b90610fb7565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610e8085610fc5565b9050610e96610e9087838761102c565b83610fa4565b610ea5428410156101b8610fa4565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610f4661113e565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816107ef576107ef81611142565b600255565b6000610c8683836001610c5e565b6000610fcf610ed9565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061103e82516041146101b9610fa4565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156110b7573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061113257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526107fd917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220372e7c9f3dfad58e433bfe71dfe9d982d55877da3c9ab68e9df96a10d7075ca764736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x15F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79CC6790 GT PUSH2 0xC0 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x591 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5FC JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x644 JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x505 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x54B JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x90193B7C GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0xA1903EAB EQ PUSH2 0x4D2 JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x43D JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x40C10F19 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x345 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x38D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x3B7 JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x2EA JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2FF JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x148 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2BF JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1EE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x659 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1E0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x211 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x70D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x723 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x729 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D4 PUSH2 0x78A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x793 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x351 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x368 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7E5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x800 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x41A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x828 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x85E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x86F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x897 JUMP JUMPDEST PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x916 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x95C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x9AF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x61F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x650 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0xABC JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x703 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6D8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x703 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6E6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71A CALLER DUP5 DUP5 PUSH2 0xAC6 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x736 DUP5 DUP5 DUP5 PUSH2 0xB35 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x780 SWAP2 DUP7 SWAP2 PUSH2 0x77B SWAP1 DUP7 PUSH2 0x19E PUSH2 0xC5E JUMP JUMPDEST PUSH2 0xAC6 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79D PUSH2 0xABC JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x71A SWAP2 DUP6 SWAP1 PUSH2 0x77B SWAP1 DUP7 PUSH2 0xC74 JUMP JUMPDEST PUSH2 0x7EF DUP3 DUP3 PUSH2 0xC8D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x7FD CALLER DUP3 PUSH2 0xD46 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x842 DUP3 PUSH2 0x1A1 PUSH2 0x83B DUP7 CALLER PUSH2 0xA84 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xC5E JUMP JUMPDEST SWAP1 POP PUSH2 0x84F DUP4 CALLER DUP4 PUSH2 0xAC6 JUMP JUMPDEST PUSH2 0x859 DUP4 DUP4 PUSH2 0xD46 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x869 DUP3 PUSH2 0x86F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x703 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6D8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x703 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x922 CALLER CALLVALUE PUSH2 0xC8D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLVALUE DUP2 MSTORE SWAP1 MLOAD PUSH32 0x5AC3D75F987A73CEE9A456A277139319EEE6559E3D027A360D2FC37AC93E74A3 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP CALLVALUE SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x71A SWAP2 DUP6 SWAP1 PUSH2 0x77B SWAP1 DUP7 PUSH2 0x19F PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71A CALLER DUP5 DUP5 PUSH2 0xB35 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0x9DE DUP13 PUSH2 0x86F JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xA6F DUP9 DUP3 PUSH2 0xA66 DUP8 DUP8 DUP8 PUSH2 0xE36 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xA7A DUP9 DUP9 DUP9 PUSH2 0xAC6 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79D PUSH2 0xED9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xB59 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xFA4 JUMP JUMPDEST PUSH2 0xB7D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xFA4 JUMP JUMPDEST PUSH2 0xB88 DUP4 DUP4 DUP4 PUSH2 0x859 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xBBB SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xC5E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xBF7 SWAP1 DUP3 PUSH2 0xC74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC6D DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xFA4 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xC86 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xFA4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xC99 PUSH1 0x0 DUP4 DUP4 PUSH2 0x859 JUMP JUMPDEST PUSH2 0xCB3 PUSH2 0xCAE DUP3 PUSH2 0xCA8 PUSH2 0x723 JUMP JUMPDEST SWAP1 PUSH2 0xC74 JUMP JUMPDEST PUSH2 0xFB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xCE3 SWAP1 DUP3 PUSH2 0xC74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xD6A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xFA4 JUMP JUMPDEST PUSH2 0xD76 DUP3 PUSH1 0x0 DUP4 PUSH2 0x859 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xDA9 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xC5E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xDE4 PUSH2 0xCAE DUP3 PUSH2 0xDDE PUSH2 0x723 JUMP JUMPDEST SWAP1 PUSH2 0xFB7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE80 DUP6 PUSH2 0xFC5 JUMP JUMPDEST SWAP1 POP PUSH2 0xE96 PUSH2 0xE90 DUP8 DUP4 DUP8 PUSH2 0x102C JUMP JUMPDEST DUP4 PUSH2 0xFA4 JUMP JUMPDEST PUSH2 0xEA5 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xFA4 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xF46 PUSH2 0x113E JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x7EF JUMPI PUSH2 0x7EF DUP2 PUSH2 0x1142 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC86 DUP4 DUP4 PUSH1 0x1 PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFCF PUSH2 0xED9 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x103E DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xFA4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1132 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x7FD SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATACOPY 0x2E PUSH29 0x9F3DFAD58E433BFE71DFE9D982D55877DA3C9AB68E9DF96A10D7075CA7 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"980:465:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:50;;;;;;;;;;;;;;;;;;:::i;3156:81::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2243:113:52;;;;;;;;;;;;;:::i;6269:211:50:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:50;;;;;;;;;:::i;1083:99:59:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1083:99:59;;;;;;;;;:::i;:::-;;473:87:51;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;473:87:51;;:::i;4022:117:50:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:50;;;;:::i;866:283:51:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;866:283:51;;;;;;;;;:::i;2006:113:52:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2006:113:52;;;;:::i;1303:121:40:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:40;;;;:::i;2448:85:50:-;;;;;;;;;;;;;:::i;1268:175:81:-;;;;;;;;;;;;;;;;-1:-1:-1;1268:175:81;;;;:::i;6967:312:50:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:50;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:50;;;;;;;;;:::i;1437:508:52:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1437:508:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4570:149:50:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:50;;;;;;;;;;;:::i;1184:113:40:-;;;;;;;;;;;;;:::i;2254:81:50:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:50;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;10712:3:14;5752:35:50;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:50;5488:386;;;;;:::o;3156:81::-;3221:9;;;;3156:81;:::o;2243:113:52:-;2303:7;2329:20;:18;:20::i;:::-;2322:27;;2243:113;:::o;6269:211:50:-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;1083:99:59:-;1151:24;1157:9;1168:6;1151:5;:24::i;:::-;1083:99;;:::o;473:87:51:-;528:25;534:10;546:6;528:5;:25::i;:::-;473:87;:::o;4022:117:50:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;866:283:51:-;942:26;971:79;1006:6;10920:3:14;971:30:51;981:7;990:10;971:9;:30::i;:::-;:34;:79;:34;:79::i;:::-;942:108;;1061:49;1070:7;1079:10;1091:18;1061:8;:49::i;:::-;1120:22;1126:7;1135:6;1120:5;:22::i;:::-;866:283;;;:::o;2006:113:52:-;2067:7;2093:19;2106:5;2093:12;:19::i;:::-;2086:26;2006:113;-1:-1:-1;;2006:113:52:o;1303:121:40:-;1398:19;;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;2448:85:50:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;1268:175:81;1328:7;1347:28;1353:10;1365:9;1347:5;:28::i;:::-;1390:20;;;1400:9;1390:20;;;;;;;;;;;;;-1:-1:-1;1427:9:81;1268:175;;;:::o;6967:312:50:-;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;10786:3:14;7143:36:50;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;1437:508:52:-;1645:18;921:109;1718:5;1725:7;1734:5;1741:19;1754:5;1741:12;:19::i;:::-;1762:8;1689:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:115;;;;;;1645:136;;1792:104;1814:5;1821:10;1833:26;1851:1;1854;1857;1833:17;:26::i;:::-;1861:8;12759:3:14;1792:21:52;:104::i;:::-;1907:31;1916:5;1923:7;1932:5;1907:8;:31::i;:::-;1437:508;;;;;;;;:::o;4570:149:50:-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;1184:113:40:-;1244:7;1270:20;:18;:20::i;10034:213:50:-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10308:3:14;7880:8:50;:71::i;:::-;7961:72;7970:23;;;;;10376:3:14;7961:8:50;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;10854:3:14;8122:21:50;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:57:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:57;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:57:o;8583:297:50:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;9284:21;;;;;10506:3:14;9275:8:50;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;11950:3:14;9435:22:50;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;3803:419:40:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:40;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:40:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12277:3:14;2487:8:40;:63::i;:::-;-1:-1:-1;;;2884:19:40;;;;;;;;:10;:19;;;;;:24;;2907:1;2884:24;;;-1:-1:-1;;1701:1214:40:o;2386:188:49:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;918:101:14:-;987:9;982:34;;998:18;1006:9;998:7;:18::i;3870:94:50:-;3937:12;:20;3870:94::o;1404:121:57:-;1462:7;1488:30;1492:1;1495;5172::14;1488:3:57;:30::i;3199:183:49:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:40:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12334:3:14;3082:8:40;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:40;;;;;;-1:-1:-1;;3728:30:40;;;;;;;:61;;;3782:7;3762:27;;:16;:27;;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:40:o;3433:187:49:-;3595:9;;3570:44::o;1437:126:14:-;4395:66;1732:18;4383:79;;;4601:66;4595:4;4588:80;4743:1;4737:4;4730:15;2871:2;2904:18;;;2949;;;2876:4;2945:29;;;3747:1;3838:14;2856:18;;;3827:26;2997:18;;;;3044;;;3040:29;3859:2;3855:17;3823:50;3802:72;;3797:3;3793:82;4810:4;4803:26;1484:28;;;;1761:14;;5036:3;;5026:14"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","submit(address)":"a1903eab","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"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\"},{\"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\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EthStaked\",\"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\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"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\":\"amount\",\"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\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"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\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"submit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"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 value {ERC20} uses, unless {_setupDecimals} is called. 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}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockStETH.sol\":\"MockStETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xffe929ce55ef0cbdcc60eee8bc9375c295757ad13afe3d757646538aa0429ff5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90091ad3a860b0baa930d9b4083b503eb9ce2d222f738ce3b009d434271a27ae\",\"dweb:/ipfs/QmeQxy2YHbeumMXxKqEnXF7pGw2Ke43cHzttG59WYHibVV\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x2e5cd2e8ce3f3380853a42af5891f787caa27d4aa5f5de0cd18f2f4ecf085f9c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae8aad1c72dd6ad70d9377d8b025af8ff9648fb99fcac4ed101c3ffe9d74c082\",\"dweb:/ipfs/QmQ5A29nCNj72ckV23cCEANomh5tt5UJkL4938GLYPEn4Q\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x1ac831deb4f3dcea6c5f67a2bc83d49a9a7434029a4d6cc386b086a7f8fce369\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://492a6ea2320206e8956c15ebf326de8dbba3c3869014d7de4959bdb856ecd892\",\"dweb:/ipfs/QmSuPXCvQJyTe2YbSE9sgTv64nMuoZrHH7Y2LPG7cVbJG7\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\":{\"keccak256\":\"0x6a1c952de46f46c608231dfd68986fba02d7cff3c4abfe5708497f04e6ca0358\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://82855be50bfe977a14fb684384790f19a8bbdf1937b69a89608c2ad51817e32a\",\"dweb:/ipfs/Qmbf8L4dQSFguPD4CCmEFXjDn2HBxtCbJjU2C3qYRkmkkb\"]},\"contracts/test/MockStETH.sol\":{\"keccak256\":\"0x4a325185c05527823b09a38ef8ebe4e4a5d929eabaa59e60e222b1b59123619c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5032d479406cbc95056d6d13e42cd8790b4ab81a38721d34c1e008fc8beed063\",\"dweb:/ipfs/QmZoWGgRYpmEdJ6HRb8Z74RVW6HVX2qeZwPxUb86Ef581m\"]}},\"version\":1}"}},"contracts/test/MockStaticATokenLM.sol":{"MockStaticATokenLM":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"contract IERC20","name":"underlyingAsset","type":"address"},{"internalType":"contract IERC20","name":"aToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":false,"internalType":"address","name":"depositor","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint16","name":"referralCode","type":"uint16"},{"indexed":false,"internalType":"bool","name":"fromUnderlying","type":"bool"}],"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":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"staticAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dynamicAmount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"toUnderlying","type":"bool"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"ASSET","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ATOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INCENTIVES_CONTROLLER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"LENDING_POOL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"REWARD_TOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"pure","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":"amount","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":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"claimRewards","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"claimRewardsOnBehalf","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"claimRewardsToSelf","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"collectAndUpdateRewards","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint16","name":"referralCode","type":"uint16"},{"internalType":"bool","name":"fromUnderlying","type":"bool"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"dynamicBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"dynamicToStaticAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getAccRewardsPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"getClaimableRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getLastRewardBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getLifetimeRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getLifetimeRewardsClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getTotalClaimableRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"getUnclaimedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct IStaticATokenLM.SignatureParams","name":"","type":"tuple"}],"name":"metaDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct IStaticATokenLM.SignatureParams","name":"","type":"tuple"}],"name":"metaWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","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":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"staticToDynamicAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"withdrawDynamicAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c06040523480156200001157600080fd5b5060405162001569380380620015698339810160408190526200003491620001fb565b838381818160039080519060200190620000509291906200009a565b508051620000669060049060208401906200009a565b50506005805460ff191660121790555050506001600160601b0319606092831b8116608052911b1660a05250620002899050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000dd57805160ff19168380011785556200010d565b828001600101855582156200010d579182015b828111156200010d578251825591602001919060010190620000f0565b506200011b9291506200011f565b5090565b5b808211156200011b576000815560010162000120565b80516001600160a01b03811681146200014e57600080fd5b92915050565b600082601f83011262000165578081fd5b81516001600160401b03808211156200017c578283fd5b6040516020601f8401601f19168201810183811183821017156200019e578586fd5b80604052508194508382528681858801011115620001bb57600080fd5b600092505b83831015620001df5785830181015182840182015291820191620001c0565b83831115620001f15760008185840101525b5050505092915050565b6000806000806080858703121562000211578384fd5b84516001600160401b038082111562000228578586fd5b620002368883890162000154565b955060208701519150808211156200024c578485fd5b506200025b8782880162000154565b9350506200026d866040870162000136565b91506200027e866060870162000136565b905092959194509250565b60805160601c60a05160601c6112b6620002b36000398061078d52508061076952506112b66000f3fe608060405234801561001057600080fd5b50600436106102c85760003560e01c8063602665571161017b578063b3a59022116100d8578063dd05aa121161008c578063ead5d35911610071578063ead5d359146104c7578063ed24911d146103ac578063f57d0b40146103b4576102c8565b8063dd05aa12146104a6578063dd62ed3e146104b4576102c8565b8063bf62bee6116100bd578063bf62bee6146103ac578063c485852b1461048a578063d505accf14610498576102c8565b8063b3a59022146103ac578063b4dcfc771461030b576102c8565b806399248ea71161012f578063a135a55e11610114578063a135a55e146103ac578063a457c2d714610464578063a9059cbb14610477576102c8565b806399248ea71461030b5780639dc29fac14610451576102c8565b806370a082311161016057806370a08231146104365780637f372cff146103ac57806395d89b4114610449576102c8565b8063602665571461042857806369a69e2914610384576102c8565b806331a5cfa41161022957806344b68c3f116101dd5780634800d97f116101c25780634800d97f1461040a578063491c011a1461041257806351c0e06114610420576102c8565b806344b68c3f1461038457806345c1ace7146103f7576102c8565b8063395093511161020e57806339509351146103c75780633eb2eba6146103da57806340c10f19146103e4576102c8565b806331a5cfa4146103ac57806336a5a6d6146103b4576102c8565b8063288587ce116102805780632f2cab87116102655780632f2cab8714610371578063308e401e14610384578063313ce56714610397576102c8565b8063288587ce146103485780632c4e722e14610369576102c8565b806310d0ab22116102b157806310d0ab221461030b57806318160ddd1461032057806323b872dd14610335576102c8565b806306fdde03146102cd578063095ea7b3146102eb575b600080fd5b6102d56104da565b6040516102e291906111bc565b60405180910390f35b6102fe6102f9366004611027565b61058e565b6040516102e291906111a8565b6103136105a5565b6040516102e29190611107565b6103286105e2565b6040516102e291906111b3565b6102fe610343366004610e7e565b6105e8565b61035b610356366004611051565b610649565b6040516102e2929190611264565b61032861067e565b61032861037f366004611085565b61068e565b610328610392366004610dea565b6105a5565b61039f6106d8565b6040516102e29190611272565b6103286105a5565b6103286103c23660046110ef565b6106e1565b6102fe6103d5366004611027565b6106e4565b6103e2610727565b005b6103e26103f2366004611027565b610759565b6103e26104053660046110d4565b610727565b610313610767565b6103e2610405366004610ffc565b61031361078b565b61035b610356366004610f38565b610328610444366004610dea565b6107af565b6102d56107d7565b6103e261045f366004611027565b610856565b6102fe610472366004611027565b610860565b6102fe610485366004611027565b6108a6565b610328610392366004610ebb565b6103e2610405366004610f89565b6103e2610405366004610e39565b6103286104c2366004610e05565b6108b3565b61035b6104d5366004611051565b6108eb565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105845780601f1061055957610100808354040283529160200191610584565b820191906000526020600020905b81548152906001019060200180831161056757829003601f168201915b5050505050905090565b600061059b338484610940565b5060015b92915050565b60006040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d99061122d565b60405180910390fd5b60025490565b60006105f58484846109b5565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461063f91869161063a908661019e610ad6565b610940565b5060019392505050565b6000806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d99061122d565b6b033b2e3c9fd0803ce800000090565b60007f453f5ceaa8d79b7748d93ffec5a1173bcd603ff626bdd89a7986e213602672a633868686866040516106c7959493929190611128565b60405180910390a150919392505050565b60055460ff1690565b90565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161059b91859061063a9086610aec565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d99061122d565b6107638282610b05565b5050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105845780601f1061055957610100808354040283529160200191610584565b6107638282610bc3565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161059b91859061063a908661019f610ad6565b600061059b3384846109b5565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000807fcccf99d807f7fed9cc525109ed9b8899ad8b2cdd7ab053190ccdf7c977dcaf6133868661091b886106e1565b8760405161092d95949392919061116a565b60405180910390a1509193849350915050565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109a89085906111b3565b60405180910390a3505050565b6109d973ffffffffffffffffffffffffffffffffffffffff84161515610198610cbf565b6109fd73ffffffffffffffffffffffffffffffffffffffff83161515610199610cbf565b610a08838383610ccd565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610a3b90826101a0610ad6565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610a779082610aec565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109a89085906111b3565b6000610ae58484111583610cbf565b5050900390565b6000828201610afe8482101583610cbf565b9392505050565b610b1160008383610ccd565b610b2b610b2682610b206105e2565b90610aec565b610cd2565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610b5b9082610aec565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610bb79085906111b3565b60405180910390a35050565b610be773ffffffffffffffffffffffffffffffffffffffff8316151561019b610cbf565b610bf382600083610ccd565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610c2690826101b2610ad6565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610c61610b2682610c5b6105e2565b90610cd7565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bb791906111b3565b816107635761076381610ce5565b505050565b600255565b6000610afe83836001610ad6565b610d0f817f42414c0000000000000000000000000000000000000000000000000000000000610d12565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461059f57600080fd5b8035801515811461059f57600080fd5b600060608284031215610dd2578081fd5b50919050565b803561ffff8116811461059f57600080fd5b600060208284031215610dfb578081fd5b610afe8383610d8d565b60008060408385031215610e17578081fd5b610e218484610d8d565b9150610e308460208501610d8d565b90509250929050565b600080600060608486031215610e4d578081fd5b610e578585610d8d565b9250610e668560208601610d8d565b9150610e758560408601610db1565b90509250925092565b600080600060608486031215610e92578283fd5b610e9c8585610d8d565b9250610eab8560208601610d8d565b9150604084013590509250925092565b6000806000806000806000610120888a031215610ed6578283fd5b610ee08989610d8d565b9650610eef8960208a01610d8d565b955060408801359450610f058960608a01610dd8565b9350610f148960808a01610db1565b925060a08801359150610f2a8960c08a01610dc1565b905092959891949750929550565b6000806000806000806000610120888a031215610f53578283fd5b610f5d8989610d8d565b9650610f6c8960208a01610d8d565b95506040880135945060608801359350610f148960808a01610db1565b600080600080600080600060e0888a031215610fa3578283fd5b610fad8989610d8d565b9650610fbc8960208a01610d8d565b95506040880135945060608801359350608088013560ff81168114610fdf578384fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561100e578182fd5b6110188484610d8d565b9150610e308460208501610db1565b60008060408385031215611039578182fd5b6110438484610d8d565b946020939093013593505050565b600080600060608486031215611065578081fd5b61106f8585610d8d565b925060208401359150610e758560408601610db1565b6000806000806080858703121561109a578182fd5b6110a48686610d8d565b9350602085013592506110ba8660408701610dd8565b91506110c98660608701610db1565b905092959194509250565b6000602082840312156110e5578081fd5b610afe8383610db1565b600060208284031215611100578081fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9586168152939094166020840152604083019190915261ffff166060820152901515608082015260a00190565b73ffffffffffffffffffffffffffffffffffffffff958616815293909416602084015260408301919091526060820152901515608082015260a00190565b901515815260200190565b90815260200190565b6000602080835283518082850152825b818110156111e8578581018301518582016040015282016111cc565b818111156111f95783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6020808252601c908201527f4d6f636b206d6574686f643b206e6f7420696d706c656d656e74656400000000604082015260600190565b918252602082015260400190565b60ff9190911681526020019056fea2646970667358221220c2882a75ba632b4d4299554d92f64e03b96abbde8d60cc544221caadbc445df564736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1569 CODESIZE SUB DUP1 PUSH3 0x1569 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1FB JUMP JUMPDEST DUP4 DUP4 DUP2 DUP2 DUP2 PUSH1 0x3 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x50 SWAP3 SWAP2 SWAP1 PUSH3 0x9A JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x66 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x9A JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE POP PUSH3 0x289 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xDD JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x10D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x10D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x10D JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xF0 JUMP JUMPDEST POP PUSH3 0x11B SWAP3 SWAP2 POP PUSH3 0x11F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x11B JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x120 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x165 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x17C JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x1F DUP5 ADD PUSH1 0x1F NOT AND DUP3 ADD DUP2 ADD DUP4 DUP2 GT DUP4 DUP3 LT OR ISZERO PUSH3 0x19E JUMPI DUP6 DUP7 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP2 SWAP5 POP DUP4 DUP3 MSTORE DUP7 DUP2 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP3 POP JUMPDEST DUP4 DUP4 LT ISZERO PUSH3 0x1DF JUMPI DUP6 DUP4 ADD DUP2 ADD MLOAD DUP3 DUP5 ADD DUP3 ADD MSTORE SWAP2 DUP3 ADD SWAP2 PUSH3 0x1C0 JUMP JUMPDEST DUP4 DUP4 GT ISZERO PUSH3 0x1F1 JUMPI PUSH1 0x0 DUP2 DUP6 DUP5 ADD ADD MSTORE JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x211 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x228 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH3 0x236 DUP9 DUP4 DUP10 ADD PUSH3 0x154 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x24C JUMPI DUP5 DUP6 REVERT JUMPDEST POP PUSH3 0x25B DUP8 DUP3 DUP9 ADD PUSH3 0x154 JUMP JUMPDEST SWAP4 POP POP PUSH3 0x26D DUP7 PUSH1 0x40 DUP8 ADD PUSH3 0x136 JUMP JUMPDEST SWAP2 POP PUSH3 0x27E DUP7 PUSH1 0x60 DUP8 ADD PUSH3 0x136 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x12B6 PUSH3 0x2B3 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x78D MSTORE POP DUP1 PUSH2 0x769 MSTORE POP PUSH2 0x12B6 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2C8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x60266557 GT PUSH2 0x17B JUMPI DUP1 PUSH4 0xB3A59022 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xDD05AA12 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xEAD5D359 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xEAD5D359 EQ PUSH2 0x4C7 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xF57D0B40 EQ PUSH2 0x3B4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xDD05AA12 EQ PUSH2 0x4A6 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4B4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xBF62BEE6 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xBF62BEE6 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xC485852B EQ PUSH2 0x48A JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x498 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xB3A59022 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xB4DCFC77 EQ PUSH2 0x30B JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x99248EA7 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0xA135A55E GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xA135A55E EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x464 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x477 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x99248EA7 EQ PUSH2 0x30B JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x451 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x436 JUMPI DUP1 PUSH4 0x7F372CFF EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x449 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x60266557 EQ PUSH2 0x428 JUMPI DUP1 PUSH4 0x69A69E29 EQ PUSH2 0x384 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x31A5CFA4 GT PUSH2 0x229 JUMPI DUP1 PUSH4 0x44B68C3F GT PUSH2 0x1DD JUMPI DUP1 PUSH4 0x4800D97F GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x4800D97F EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0x491C011A EQ PUSH2 0x412 JUMPI DUP1 PUSH4 0x51C0E061 EQ PUSH2 0x420 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x44B68C3F EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x45C1ACE7 EQ PUSH2 0x3F7 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x39509351 GT PUSH2 0x20E JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3C7 JUMPI DUP1 PUSH4 0x3EB2EBA6 EQ PUSH2 0x3DA JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x3E4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x31A5CFA4 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0x36A5A6D6 EQ PUSH2 0x3B4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x288587CE GT PUSH2 0x280 JUMPI DUP1 PUSH4 0x2F2CAB87 GT PUSH2 0x265 JUMPI DUP1 PUSH4 0x2F2CAB87 EQ PUSH2 0x371 JUMPI DUP1 PUSH4 0x308E401E EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x397 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x288587CE EQ PUSH2 0x348 JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x369 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x10D0AB22 GT PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x10D0AB22 EQ PUSH2 0x30B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x320 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x335 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2EB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2D5 PUSH2 0x4DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x11BC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2FE PUSH2 0x2F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x58E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x11A8 JUMP JUMPDEST PUSH2 0x313 PUSH2 0x5A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x1107 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x5E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x343 CALLDATASIZE PUSH1 0x4 PUSH2 0xE7E JUMP JUMPDEST PUSH2 0x5E8 JUMP JUMPDEST PUSH2 0x35B PUSH2 0x356 CALLDATASIZE PUSH1 0x4 PUSH2 0x1051 JUMP JUMPDEST PUSH2 0x649 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP3 SWAP2 SWAP1 PUSH2 0x1264 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x67E JUMP JUMPDEST PUSH2 0x328 PUSH2 0x37F CALLDATASIZE PUSH1 0x4 PUSH2 0x1085 JUMP JUMPDEST PUSH2 0x68E JUMP JUMPDEST PUSH2 0x328 PUSH2 0x392 CALLDATASIZE PUSH1 0x4 PUSH2 0xDEA JUMP JUMPDEST PUSH2 0x5A5 JUMP JUMPDEST PUSH2 0x39F PUSH2 0x6D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x1272 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x5A5 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x3C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x10EF JUMP JUMPDEST PUSH2 0x6E1 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x3D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x6E4 JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x727 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E2 PUSH2 0x3F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x759 JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x405 CALLDATASIZE PUSH1 0x4 PUSH2 0x10D4 JUMP JUMPDEST PUSH2 0x727 JUMP JUMPDEST PUSH2 0x313 PUSH2 0x767 JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x405 CALLDATASIZE PUSH1 0x4 PUSH2 0xFFC JUMP JUMPDEST PUSH2 0x313 PUSH2 0x78B JUMP JUMPDEST PUSH2 0x35B PUSH2 0x356 CALLDATASIZE PUSH1 0x4 PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x444 CALLDATASIZE PUSH1 0x4 PUSH2 0xDEA JUMP JUMPDEST PUSH2 0x7AF JUMP JUMPDEST PUSH2 0x2D5 PUSH2 0x7D7 JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x45F CALLDATASIZE PUSH1 0x4 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x856 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x472 CALLDATASIZE PUSH1 0x4 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x860 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x485 CALLDATASIZE PUSH1 0x4 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x8A6 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x392 CALLDATASIZE PUSH1 0x4 PUSH2 0xEBB JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x405 CALLDATASIZE PUSH1 0x4 PUSH2 0xF89 JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x405 CALLDATASIZE PUSH1 0x4 PUSH2 0xE39 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x4C2 CALLDATASIZE PUSH1 0x4 PUSH2 0xE05 JUMP JUMPDEST PUSH2 0x8B3 JUMP JUMPDEST PUSH2 0x35B PUSH2 0x4D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1051 JUMP JUMPDEST PUSH2 0x8EB JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x584 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x559 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x584 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x567 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x59B CALLER DUP5 DUP5 PUSH2 0x940 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D9 SWAP1 PUSH2 0x122D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F5 DUP5 DUP5 DUP5 PUSH2 0x9B5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x63F SWAP2 DUP7 SWAP2 PUSH2 0x63A SWAP1 DUP7 PUSH2 0x19E PUSH2 0xAD6 JUMP JUMPDEST PUSH2 0x940 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D9 SWAP1 PUSH2 0x122D JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x453F5CEAA8D79B7748D93FFEC5A1173BCD603FF626BDD89A7986E213602672A6 CALLER DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x6C7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1128 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP SWAP2 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x59B SWAP2 DUP6 SWAP1 PUSH2 0x63A SWAP1 DUP7 PUSH2 0xAEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D9 SWAP1 PUSH2 0x122D JUMP JUMPDEST PUSH2 0x763 DUP3 DUP3 PUSH2 0xB05 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x584 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x559 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x584 JUMP JUMPDEST PUSH2 0x763 DUP3 DUP3 PUSH2 0xBC3 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x59B SWAP2 DUP6 SWAP1 PUSH2 0x63A SWAP1 DUP7 PUSH2 0x19F PUSH2 0xAD6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x59B CALLER DUP5 DUP5 PUSH2 0x9B5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xCCCF99D807F7FED9CC525109ED9B8899AD8B2CDD7AB053190CCDF7C977DCAF61 CALLER DUP7 DUP7 PUSH2 0x91B DUP9 PUSH2 0x6E1 JUMP JUMPDEST DUP8 PUSH1 0x40 MLOAD PUSH2 0x92D SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x116A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP SWAP2 SWAP4 DUP5 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x9A8 SWAP1 DUP6 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x9D9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xCBF JUMP JUMPDEST PUSH2 0x9FD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xCBF JUMP JUMPDEST PUSH2 0xA08 DUP4 DUP4 DUP4 PUSH2 0xCCD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA3B SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xAD6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xA77 SWAP1 DUP3 PUSH2 0xAEC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x9A8 SWAP1 DUP6 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAE5 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xCBF JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xAFE DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xCBF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB11 PUSH1 0x0 DUP4 DUP4 PUSH2 0xCCD JUMP JUMPDEST PUSH2 0xB2B PUSH2 0xB26 DUP3 PUSH2 0xB20 PUSH2 0x5E2 JUMP JUMPDEST SWAP1 PUSH2 0xAEC JUMP JUMPDEST PUSH2 0xCD2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xB5B SWAP1 DUP3 PUSH2 0xAEC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xBB7 SWAP1 DUP6 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xBE7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xCBF JUMP JUMPDEST PUSH2 0xBF3 DUP3 PUSH1 0x0 DUP4 PUSH2 0xCCD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC26 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xAD6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xC61 PUSH2 0xB26 DUP3 PUSH2 0xC5B PUSH2 0x5E2 JUMP JUMPDEST SWAP1 PUSH2 0xCD7 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xBB7 SWAP2 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST DUP2 PUSH2 0x763 JUMPI PUSH2 0x763 DUP2 PUSH2 0xCE5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAFE DUP4 DUP4 PUSH1 0x1 PUSH2 0xAD6 JUMP JUMPDEST PUSH2 0xD0F DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xD12 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x59F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x59F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDD2 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x59F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDFB JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xAFE DUP4 DUP4 PUSH2 0xD8D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE17 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE21 DUP5 DUP5 PUSH2 0xD8D JUMP JUMPDEST SWAP2 POP PUSH2 0xE30 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xD8D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xE4D JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE57 DUP6 DUP6 PUSH2 0xD8D JUMP JUMPDEST SWAP3 POP PUSH2 0xE66 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xD8D JUMP JUMPDEST SWAP2 POP PUSH2 0xE75 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xE92 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xE9C DUP6 DUP6 PUSH2 0xD8D JUMP JUMPDEST SWAP3 POP PUSH2 0xEAB DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xD8D JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xED6 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xEE0 DUP10 DUP10 PUSH2 0xD8D JUMP JUMPDEST SWAP7 POP PUSH2 0xEEF DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0xD8D JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH2 0xF05 DUP10 PUSH1 0x60 DUP11 ADD PUSH2 0xDD8 JUMP JUMPDEST SWAP4 POP PUSH2 0xF14 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0xDB1 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH2 0xF2A DUP10 PUSH1 0xC0 DUP11 ADD PUSH2 0xDC1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xF53 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xF5D DUP10 DUP10 PUSH2 0xD8D JUMP JUMPDEST SWAP7 POP PUSH2 0xF6C DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0xD8D JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0xF14 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0xDB1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xFA3 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xFAD DUP10 DUP10 PUSH2 0xD8D JUMP JUMPDEST SWAP7 POP PUSH2 0xFBC DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0xD8D JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xFDF JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x100E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1018 DUP5 DUP5 PUSH2 0xD8D JUMP JUMPDEST SWAP2 POP PUSH2 0xE30 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xDB1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1039 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1043 DUP5 DUP5 PUSH2 0xD8D JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1065 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x106F DUP6 DUP6 PUSH2 0xD8D JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0xE75 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0xDB1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x109A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x10A4 DUP7 DUP7 PUSH2 0xD8D JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH2 0x10BA DUP7 PUSH1 0x40 DUP8 ADD PUSH2 0xDD8 JUMP JUMPDEST SWAP2 POP PUSH2 0x10C9 DUP7 PUSH1 0x60 DUP8 ADD PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10E5 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xAFE DUP4 DUP4 PUSH2 0xDB1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1100 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0xFFFF AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x11E8 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x11CC JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x11F9 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x4D6F636B206D6574686F643B206E6F7420696D706C656D656E74656400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 DUP9 0x2A PUSH22 0xBA632B4D4299554D92F64E03B96ABBDE8D60CC544221 0xCA 0xAD 0xBC DIFFICULTY 0x5D CREATE2 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"907:5119:82:-:0;;;1508:222;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1649:4;1655:6;844:4:58;850:6;2126:5:50;2118;:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2141:17:50;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:50;:14;;-1:-1:-1;;2168:14:50;2180:2;2168:14;;;-1:-1:-1;;;;;;;;;1673:24:82::1;::::0;;;;;::::1;::::0;1707:16;;;::::1;::::0;-1:-1:-1;907:5119:82;;-1:-1:-1;907:5119:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;907:5119:82;;;-1:-1:-1;907:5119:82;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;5:164:-1;98:13;;-1:-1;;;;;2431:54;;2848:50;;2838:2;;2912:1;;2902:12;2838:2;83:86;;;;:::o;177:444::-;;290:3;283:4;275:6;271:17;267:27;257:2;;-1:-1;;298:12;257:2;332:13;;-1:-1;;;;;1962:30;;;1959:2;;;-1:-1;;1995:12;1959:2;1628;1622:9;2136:4;2068:9;2049:17;;-1:-1;;2045:33;1654:17;;;;1714:34;;;1750:22;;;1711:62;1708:2;;;-1:-1;;1776:12;1708:2;1806:10;1628:2;1795:22;;351:74;;;445:6;438:5;431:21;549:3;2136:4;540:6;473;531:16;;528:25;525:2;;;566:1;;556:12;525:2;2563:1;2554:10;;2570:101;2584:6;2581:1;2578:13;2570:101;;;2651:11;;;;;2645:18;2632:11;;;;;2625:39;2599:10;;;;2570:101;;;2686:6;2683:1;2680:13;2677:2;;;2563:1;2136:4;2742:6;507:5;2733:16;;2726:27;2677:2;;;;;250:371;;;;:::o;629:930::-;;;;;845:3;833:9;824:7;820:23;816:33;813:2;;;-1:-1;;852:12;813:2;897:24;;-1:-1;;;;;930:30;;;927:2;;;-1:-1;;963:12;927:2;993:74;1059:7;1050:6;1039:9;1035:22;993:74;:::i;:::-;983:84;;1125:2;1114:9;1110:18;1104:25;1090:39;;941:18;1141:6;1138:30;1135:2;;;-1:-1;;1171:12;1135:2;;1201:74;1267:7;1258:6;1247:9;1243:22;1201:74;:::i;:::-;1191:84;;;1330:79;1401:7;1312:2;1381:9;1377:22;1330:79;:::i;:::-;1320:89;;1464:79;1535:7;1446:2;1515:9;1511:22;1464:79;:::i;:::-;1454:89;;807:752;;;;;;;:::o;:::-;907:5119:82;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"12997":[{"length":32,"start":1897}],"12999":[{"length":32,"start":1933}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106102c85760003560e01c8063602665571161017b578063b3a59022116100d8578063dd05aa121161008c578063ead5d35911610071578063ead5d359146104c7578063ed24911d146103ac578063f57d0b40146103b4576102c8565b8063dd05aa12146104a6578063dd62ed3e146104b4576102c8565b8063bf62bee6116100bd578063bf62bee6146103ac578063c485852b1461048a578063d505accf14610498576102c8565b8063b3a59022146103ac578063b4dcfc771461030b576102c8565b806399248ea71161012f578063a135a55e11610114578063a135a55e146103ac578063a457c2d714610464578063a9059cbb14610477576102c8565b806399248ea71461030b5780639dc29fac14610451576102c8565b806370a082311161016057806370a08231146104365780637f372cff146103ac57806395d89b4114610449576102c8565b8063602665571461042857806369a69e2914610384576102c8565b806331a5cfa41161022957806344b68c3f116101dd5780634800d97f116101c25780634800d97f1461040a578063491c011a1461041257806351c0e06114610420576102c8565b806344b68c3f1461038457806345c1ace7146103f7576102c8565b8063395093511161020e57806339509351146103c75780633eb2eba6146103da57806340c10f19146103e4576102c8565b806331a5cfa4146103ac57806336a5a6d6146103b4576102c8565b8063288587ce116102805780632f2cab87116102655780632f2cab8714610371578063308e401e14610384578063313ce56714610397576102c8565b8063288587ce146103485780632c4e722e14610369576102c8565b806310d0ab22116102b157806310d0ab221461030b57806318160ddd1461032057806323b872dd14610335576102c8565b806306fdde03146102cd578063095ea7b3146102eb575b600080fd5b6102d56104da565b6040516102e291906111bc565b60405180910390f35b6102fe6102f9366004611027565b61058e565b6040516102e291906111a8565b6103136105a5565b6040516102e29190611107565b6103286105e2565b6040516102e291906111b3565b6102fe610343366004610e7e565b6105e8565b61035b610356366004611051565b610649565b6040516102e2929190611264565b61032861067e565b61032861037f366004611085565b61068e565b610328610392366004610dea565b6105a5565b61039f6106d8565b6040516102e29190611272565b6103286105a5565b6103286103c23660046110ef565b6106e1565b6102fe6103d5366004611027565b6106e4565b6103e2610727565b005b6103e26103f2366004611027565b610759565b6103e26104053660046110d4565b610727565b610313610767565b6103e2610405366004610ffc565b61031361078b565b61035b610356366004610f38565b610328610444366004610dea565b6107af565b6102d56107d7565b6103e261045f366004611027565b610856565b6102fe610472366004611027565b610860565b6102fe610485366004611027565b6108a6565b610328610392366004610ebb565b6103e2610405366004610f89565b6103e2610405366004610e39565b6103286104c2366004610e05565b6108b3565b61035b6104d5366004611051565b6108eb565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105845780601f1061055957610100808354040283529160200191610584565b820191906000526020600020905b81548152906001019060200180831161056757829003601f168201915b5050505050905090565b600061059b338484610940565b5060015b92915050565b60006040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d99061122d565b60405180910390fd5b60025490565b60006105f58484846109b5565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461063f91869161063a908661019e610ad6565b610940565b5060019392505050565b6000806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d99061122d565b6b033b2e3c9fd0803ce800000090565b60007f453f5ceaa8d79b7748d93ffec5a1173bcd603ff626bdd89a7986e213602672a633868686866040516106c7959493929190611128565b60405180910390a150919392505050565b60055460ff1690565b90565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161059b91859061063a9086610aec565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d99061122d565b6107638282610b05565b5050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105845780601f1061055957610100808354040283529160200191610584565b6107638282610bc3565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161059b91859061063a908661019f610ad6565b600061059b3384846109b5565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000807fcccf99d807f7fed9cc525109ed9b8899ad8b2cdd7ab053190ccdf7c977dcaf6133868661091b886106e1565b8760405161092d95949392919061116a565b60405180910390a1509193849350915050565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109a89085906111b3565b60405180910390a3505050565b6109d973ffffffffffffffffffffffffffffffffffffffff84161515610198610cbf565b6109fd73ffffffffffffffffffffffffffffffffffffffff83161515610199610cbf565b610a08838383610ccd565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610a3b90826101a0610ad6565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610a779082610aec565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109a89085906111b3565b6000610ae58484111583610cbf565b5050900390565b6000828201610afe8482101583610cbf565b9392505050565b610b1160008383610ccd565b610b2b610b2682610b206105e2565b90610aec565b610cd2565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610b5b9082610aec565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610bb79085906111b3565b60405180910390a35050565b610be773ffffffffffffffffffffffffffffffffffffffff8316151561019b610cbf565b610bf382600083610ccd565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610c2690826101b2610ad6565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610c61610b2682610c5b6105e2565b90610cd7565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bb791906111b3565b816107635761076381610ce5565b505050565b600255565b6000610afe83836001610ad6565b610d0f817f42414c0000000000000000000000000000000000000000000000000000000000610d12565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461059f57600080fd5b8035801515811461059f57600080fd5b600060608284031215610dd2578081fd5b50919050565b803561ffff8116811461059f57600080fd5b600060208284031215610dfb578081fd5b610afe8383610d8d565b60008060408385031215610e17578081fd5b610e218484610d8d565b9150610e308460208501610d8d565b90509250929050565b600080600060608486031215610e4d578081fd5b610e578585610d8d565b9250610e668560208601610d8d565b9150610e758560408601610db1565b90509250925092565b600080600060608486031215610e92578283fd5b610e9c8585610d8d565b9250610eab8560208601610d8d565b9150604084013590509250925092565b6000806000806000806000610120888a031215610ed6578283fd5b610ee08989610d8d565b9650610eef8960208a01610d8d565b955060408801359450610f058960608a01610dd8565b9350610f148960808a01610db1565b925060a08801359150610f2a8960c08a01610dc1565b905092959891949750929550565b6000806000806000806000610120888a031215610f53578283fd5b610f5d8989610d8d565b9650610f6c8960208a01610d8d565b95506040880135945060608801359350610f148960808a01610db1565b600080600080600080600060e0888a031215610fa3578283fd5b610fad8989610d8d565b9650610fbc8960208a01610d8d565b95506040880135945060608801359350608088013560ff81168114610fdf578384fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561100e578182fd5b6110188484610d8d565b9150610e308460208501610db1565b60008060408385031215611039578182fd5b6110438484610d8d565b946020939093013593505050565b600080600060608486031215611065578081fd5b61106f8585610d8d565b925060208401359150610e758560408601610db1565b6000806000806080858703121561109a578182fd5b6110a48686610d8d565b9350602085013592506110ba8660408701610dd8565b91506110c98660608701610db1565b905092959194509250565b6000602082840312156110e5578081fd5b610afe8383610db1565b600060208284031215611100578081fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9586168152939094166020840152604083019190915261ffff166060820152901515608082015260a00190565b73ffffffffffffffffffffffffffffffffffffffff958616815293909416602084015260408301919091526060820152901515608082015260a00190565b901515815260200190565b90815260200190565b6000602080835283518082850152825b818110156111e8578581018301518582016040015282016111cc565b818111156111f95783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6020808252601c908201527f4d6f636b206d6574686f643b206e6f7420696d706c656d656e74656400000000604082015260600190565b918252602082015260400190565b60ff9190911681526020019056fea2646970667358221220c2882a75ba632b4d4299554d92f64e03b96abbde8d60cc544221caadbc445df564736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2C8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x60266557 GT PUSH2 0x17B JUMPI DUP1 PUSH4 0xB3A59022 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xDD05AA12 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xEAD5D359 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xEAD5D359 EQ PUSH2 0x4C7 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xF57D0B40 EQ PUSH2 0x3B4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xDD05AA12 EQ PUSH2 0x4A6 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4B4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xBF62BEE6 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xBF62BEE6 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xC485852B EQ PUSH2 0x48A JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x498 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xB3A59022 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xB4DCFC77 EQ PUSH2 0x30B JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x99248EA7 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0xA135A55E GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xA135A55E EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x464 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x477 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x99248EA7 EQ PUSH2 0x30B JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x451 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x436 JUMPI DUP1 PUSH4 0x7F372CFF EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x449 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x60266557 EQ PUSH2 0x428 JUMPI DUP1 PUSH4 0x69A69E29 EQ PUSH2 0x384 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x31A5CFA4 GT PUSH2 0x229 JUMPI DUP1 PUSH4 0x44B68C3F GT PUSH2 0x1DD JUMPI DUP1 PUSH4 0x4800D97F GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x4800D97F EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0x491C011A EQ PUSH2 0x412 JUMPI DUP1 PUSH4 0x51C0E061 EQ PUSH2 0x420 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x44B68C3F EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x45C1ACE7 EQ PUSH2 0x3F7 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x39509351 GT PUSH2 0x20E JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3C7 JUMPI DUP1 PUSH4 0x3EB2EBA6 EQ PUSH2 0x3DA JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x3E4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x31A5CFA4 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0x36A5A6D6 EQ PUSH2 0x3B4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x288587CE GT PUSH2 0x280 JUMPI DUP1 PUSH4 0x2F2CAB87 GT PUSH2 0x265 JUMPI DUP1 PUSH4 0x2F2CAB87 EQ PUSH2 0x371 JUMPI DUP1 PUSH4 0x308E401E EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x397 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x288587CE EQ PUSH2 0x348 JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x369 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x10D0AB22 GT PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x10D0AB22 EQ PUSH2 0x30B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x320 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x335 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2EB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2D5 PUSH2 0x4DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x11BC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2FE PUSH2 0x2F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x58E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x11A8 JUMP JUMPDEST PUSH2 0x313 PUSH2 0x5A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x1107 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x5E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x343 CALLDATASIZE PUSH1 0x4 PUSH2 0xE7E JUMP JUMPDEST PUSH2 0x5E8 JUMP JUMPDEST PUSH2 0x35B PUSH2 0x356 CALLDATASIZE PUSH1 0x4 PUSH2 0x1051 JUMP JUMPDEST PUSH2 0x649 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP3 SWAP2 SWAP1 PUSH2 0x1264 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x67E JUMP JUMPDEST PUSH2 0x328 PUSH2 0x37F CALLDATASIZE PUSH1 0x4 PUSH2 0x1085 JUMP JUMPDEST PUSH2 0x68E JUMP JUMPDEST PUSH2 0x328 PUSH2 0x392 CALLDATASIZE PUSH1 0x4 PUSH2 0xDEA JUMP JUMPDEST PUSH2 0x5A5 JUMP JUMPDEST PUSH2 0x39F PUSH2 0x6D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x1272 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x5A5 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x3C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x10EF JUMP JUMPDEST PUSH2 0x6E1 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x3D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x6E4 JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x727 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E2 PUSH2 0x3F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x759 JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x405 CALLDATASIZE PUSH1 0x4 PUSH2 0x10D4 JUMP JUMPDEST PUSH2 0x727 JUMP JUMPDEST PUSH2 0x313 PUSH2 0x767 JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x405 CALLDATASIZE PUSH1 0x4 PUSH2 0xFFC JUMP JUMPDEST PUSH2 0x313 PUSH2 0x78B JUMP JUMPDEST PUSH2 0x35B PUSH2 0x356 CALLDATASIZE PUSH1 0x4 PUSH2 0xF38 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x444 CALLDATASIZE PUSH1 0x4 PUSH2 0xDEA JUMP JUMPDEST PUSH2 0x7AF JUMP JUMPDEST PUSH2 0x2D5 PUSH2 0x7D7 JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x45F CALLDATASIZE PUSH1 0x4 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x856 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x472 CALLDATASIZE PUSH1 0x4 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x860 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x485 CALLDATASIZE PUSH1 0x4 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x8A6 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x392 CALLDATASIZE PUSH1 0x4 PUSH2 0xEBB JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x405 CALLDATASIZE PUSH1 0x4 PUSH2 0xF89 JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x405 CALLDATASIZE PUSH1 0x4 PUSH2 0xE39 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x4C2 CALLDATASIZE PUSH1 0x4 PUSH2 0xE05 JUMP JUMPDEST PUSH2 0x8B3 JUMP JUMPDEST PUSH2 0x35B PUSH2 0x4D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1051 JUMP JUMPDEST PUSH2 0x8EB JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x584 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x559 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x584 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x567 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x59B CALLER DUP5 DUP5 PUSH2 0x940 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D9 SWAP1 PUSH2 0x122D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F5 DUP5 DUP5 DUP5 PUSH2 0x9B5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x63F SWAP2 DUP7 SWAP2 PUSH2 0x63A SWAP1 DUP7 PUSH2 0x19E PUSH2 0xAD6 JUMP JUMPDEST PUSH2 0x940 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D9 SWAP1 PUSH2 0x122D JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x453F5CEAA8D79B7748D93FFEC5A1173BCD603FF626BDD89A7986E213602672A6 CALLER DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x6C7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1128 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP SWAP2 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x59B SWAP2 DUP6 SWAP1 PUSH2 0x63A SWAP1 DUP7 PUSH2 0xAEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D9 SWAP1 PUSH2 0x122D JUMP JUMPDEST PUSH2 0x763 DUP3 DUP3 PUSH2 0xB05 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x584 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x559 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x584 JUMP JUMPDEST PUSH2 0x763 DUP3 DUP3 PUSH2 0xBC3 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x59B SWAP2 DUP6 SWAP1 PUSH2 0x63A SWAP1 DUP7 PUSH2 0x19F PUSH2 0xAD6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x59B CALLER DUP5 DUP5 PUSH2 0x9B5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xCCCF99D807F7FED9CC525109ED9B8899AD8B2CDD7AB053190CCDF7C977DCAF61 CALLER DUP7 DUP7 PUSH2 0x91B DUP9 PUSH2 0x6E1 JUMP JUMPDEST DUP8 PUSH1 0x40 MLOAD PUSH2 0x92D SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x116A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP SWAP2 SWAP4 DUP5 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x9A8 SWAP1 DUP6 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x9D9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xCBF JUMP JUMPDEST PUSH2 0x9FD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xCBF JUMP JUMPDEST PUSH2 0xA08 DUP4 DUP4 DUP4 PUSH2 0xCCD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA3B SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xAD6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xA77 SWAP1 DUP3 PUSH2 0xAEC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x9A8 SWAP1 DUP6 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAE5 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xCBF JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xAFE DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xCBF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB11 PUSH1 0x0 DUP4 DUP4 PUSH2 0xCCD JUMP JUMPDEST PUSH2 0xB2B PUSH2 0xB26 DUP3 PUSH2 0xB20 PUSH2 0x5E2 JUMP JUMPDEST SWAP1 PUSH2 0xAEC JUMP JUMPDEST PUSH2 0xCD2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xB5B SWAP1 DUP3 PUSH2 0xAEC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xBB7 SWAP1 DUP6 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xBE7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xCBF JUMP JUMPDEST PUSH2 0xBF3 DUP3 PUSH1 0x0 DUP4 PUSH2 0xCCD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC26 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xAD6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xC61 PUSH2 0xB26 DUP3 PUSH2 0xC5B PUSH2 0x5E2 JUMP JUMPDEST SWAP1 PUSH2 0xCD7 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xBB7 SWAP2 SWAP1 PUSH2 0x11B3 JUMP JUMPDEST DUP2 PUSH2 0x763 JUMPI PUSH2 0x763 DUP2 PUSH2 0xCE5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAFE DUP4 DUP4 PUSH1 0x1 PUSH2 0xAD6 JUMP JUMPDEST PUSH2 0xD0F DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xD12 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x59F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x59F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDD2 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x59F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDFB JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xAFE DUP4 DUP4 PUSH2 0xD8D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE17 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE21 DUP5 DUP5 PUSH2 0xD8D JUMP JUMPDEST SWAP2 POP PUSH2 0xE30 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xD8D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xE4D JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE57 DUP6 DUP6 PUSH2 0xD8D JUMP JUMPDEST SWAP3 POP PUSH2 0xE66 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xD8D JUMP JUMPDEST SWAP2 POP PUSH2 0xE75 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xE92 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xE9C DUP6 DUP6 PUSH2 0xD8D JUMP JUMPDEST SWAP3 POP PUSH2 0xEAB DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xD8D JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xED6 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xEE0 DUP10 DUP10 PUSH2 0xD8D JUMP JUMPDEST SWAP7 POP PUSH2 0xEEF DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0xD8D JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH2 0xF05 DUP10 PUSH1 0x60 DUP11 ADD PUSH2 0xDD8 JUMP JUMPDEST SWAP4 POP PUSH2 0xF14 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0xDB1 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH2 0xF2A DUP10 PUSH1 0xC0 DUP11 ADD PUSH2 0xDC1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xF53 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xF5D DUP10 DUP10 PUSH2 0xD8D JUMP JUMPDEST SWAP7 POP PUSH2 0xF6C DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0xD8D JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0xF14 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0xDB1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xFA3 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xFAD DUP10 DUP10 PUSH2 0xD8D JUMP JUMPDEST SWAP7 POP PUSH2 0xFBC DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0xD8D JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xFDF JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x100E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1018 DUP5 DUP5 PUSH2 0xD8D JUMP JUMPDEST SWAP2 POP PUSH2 0xE30 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xDB1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1039 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1043 DUP5 DUP5 PUSH2 0xD8D JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1065 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x106F DUP6 DUP6 PUSH2 0xD8D JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0xE75 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0xDB1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x109A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x10A4 DUP7 DUP7 PUSH2 0xD8D JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH2 0x10BA DUP7 PUSH1 0x40 DUP8 ADD PUSH2 0xDD8 JUMP JUMPDEST SWAP2 POP PUSH2 0x10C9 DUP7 PUSH1 0x60 DUP8 ADD PUSH2 0xDB1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10E5 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xAFE DUP4 DUP4 PUSH2 0xDB1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1100 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0xFFFF AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x11E8 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x11CC JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x11F9 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x4D6F636B206D6574686F643B206E6F7420696D706C656D656E74656400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 DUP9 0x2A PUSH22 0xBA632B4D4299554D92F64E03B96ABBDE8D60CC544221 0xCA 0xAD 0xBC DIFFICULTY 0x5D CREATE2 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"907:5119:82:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:50;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4857:164;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5770:129:82:-;;;:::i;:::-;;;;;;;:::i;3500:106:50:-;;;:::i;:::-;;;;;;;:::i;5488:386::-;;;;;;:::i;:::-;;:::i;3422:190:82:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2156:84::-;;;:::i;2246:281::-;;;;;;:::i;:::-;;:::i;4952:134::-;;;;;;:::i;:::-;;:::i;3156:81:50:-;;;:::i;:::-;;;;;;;:::i;5367:133:82:-;;;:::i;2947:118::-;;;;;;:::i;:::-;;:::i;6269:211:50:-;;;;;;:::i;:::-;;:::i;4288:113:82:-;;;:::i;:::-;;866:99:58;;;;;;:::i;:::-;;:::i;4696:112:82:-;;;;;;:::i;:::-;;:::i;1789:87::-;;;:::i;4575:115::-;;;;;;:::i;1882:89::-;;;:::i;3879:266::-;;;;;;:::i;4022:117:50:-;;;;;;:::i;:::-;;:::i;2448:85::-;;;:::i;971:93:58:-;;;;;;:::i;:::-;;:::i;6967:312:50:-;;;;;;:::i;:::-;;:::i;4342:170::-;;;;;;:::i;:::-;;:::i;3618:255:82:-;;;;;;:::i;3071:215::-;;;;;;:::i;4407:162::-;;;;;;:::i;4570:149:50:-;;;;;;:::i;:::-;;:::i;2533:286:82:-;;;;;;:::i;:::-;;:::i;2254:81:50:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:50;4857:164;;;;;:::o;5770:129:82:-;5835:7;5854:38;;;;;;;;;;:::i;:::-;;;;;;;;3500:106:50;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;10712:3:14;5752:35:50;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:50;5488:386;;;;;:::o;3422:190:82:-;3539:7;3548;3567:38;;;;;;;;;;:::i;2156:84::-;1422:4;2156:84;:::o;2246:281::-;2405:7;2429:68;2437:10;2449:9;2460:6;2468:12;2482:14;2429:68;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;2514:6:82;;2246:281;-1:-1:-1;;;2246:281:82:o;3156:81:50:-;3221:9;;;;3156:81;:::o;2947:118:82:-;3052:6;2947:118::o;6269:211:50:-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;4288:113:82:-;4356:38;;;;;;;;;;:::i;866:99:58:-;934:24;940:9;951:6;934:5;:24::i;:::-;866:99;;:::o;1789:87:82:-;1863:6;1789:87;:::o;1882:89::-;1957:7;1882:89;:::o;4022:117:50:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;2448:85::-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;971:93:58;1036:21;1042:6;1050;1036:5;:21::i;6967:312:50:-;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;10786:3:14;7143:36:50;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;4570:149::-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;2533:286:82:-;2662:7;2671;2695:84;2704:10;2716:9;2727:6;2735:29;2757:6;2735:21;:29::i;:::-;2766:12;2695:84;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;2797:6:82;;;;-1:-1:-1;2533:286:82;-1:-1:-1;;2533:286:82:o;10034:213:50:-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;10208:32;;;;;10187:6;;10208:32;:::i;:::-;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10308:3:14;7880:8:50;:71::i;:::-;7961:72;7970:23;;;;;10376:3:14;7961:8:50;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;10854:3:14;8122:21:50;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;;;;8298:6;;8270:35;:::i;1816:206:57:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:57;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:57:o;8583:297:50:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;8770:18;;:9;8836:37;;;;8866:6;;8836:37;:::i;:::-;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;9284:21;;;;;10506:3:14;9275:8:50;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;11950:3:14;9435:22:50;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9593:1;9567:37;;9576:7;9567:37;;;9597:6;9567:37;;;;;;:::i;918:101:14:-;987:9;982:34;;998:18;1006:9;998:7;:18::i;11245:183:50:-;;;;:::o;3870:94::-;3937:12;:20;3870:94::o;1404:121:57:-;1462:7;1488:30;1492:1;1495;5172::14;1488:3:57;:30::i;1437:126:14:-;1484:28;1492:9;1484:28;:7;:28::i;:::-;1437:126;:::o;1670:3378::-;4395:66;1732:18;4383:79;;;4601:66;4595:4;4588:80;4743:1;4737:4;4730:15;2871:2;2904:18;;;2949;;;2876:4;2945:29;;;3747:1;3838:14;2856:18;;;;3827:26;;;;2997:18;;;;3044;;;3040:29;;3859:2;3855:17;3823:50;3737:4;3743:18;;;;;;3733:29;3729:2;3725:38;3802:72;;;;3797:3;3793:82;4810:4;4803:26;1761:14;;;;;5036:3;;5026:14;5:130:-1;72:20;;14369:42;14358:54;;15699:35;;15689:2;;15748:1;;15738:12;142:124;206:20;;14100:13;;14093:21;15820:32;;15810:2;;15866:1;;15856:12;457:166;;576:2;567:6;562:3;558:16;554:25;551:2;;;-1:-1;;582:12;551:2;-1:-1;602:15;544:79;-1:-1;544:79::o;630:128::-;696:20;;14277:6;14266:18;;16064:34;;16054:2;;16112:1;;16102:12;1035:241;;1139:2;1127:9;1118:7;1114:23;1110:32;1107:2;;;-1:-1;;1145:12;1107:2;1207:53;1252:7;1228:22;1207:53;:::i;1283:366::-;;;1404:2;1392:9;1383:7;1379:23;1375:32;1372:2;;;-1:-1;;1410:12;1372:2;1472:53;1517:7;1493:22;1472:53;:::i;:::-;1462:63;;1580:53;1625:7;1562:2;1605:9;1601:22;1580:53;:::i;:::-;1570:63;;1366:283;;;;;:::o;1656:485::-;;;;1791:2;1779:9;1770:7;1766:23;1762:32;1759:2;;;-1:-1;;1797:12;1759:2;1859:53;1904:7;1880:22;1859:53;:::i;:::-;1849:63;;1967:53;2012:7;1949:2;1992:9;1988:22;1967:53;:::i;:::-;1957:63;;2075:50;2117:7;2057:2;2097:9;2093:22;2075:50;:::i;:::-;2065:60;;1753:388;;;;;:::o;2148:491::-;;;;2286:2;2274:9;2265:7;2261:23;2257:32;2254:2;;;-1:-1;;2292:12;2254:2;2354:53;2399:7;2375:22;2354:53;:::i;:::-;2344:63;;2462:53;2507:7;2444:2;2487:9;2483:22;2462:53;:::i;:::-;2452:63;;2552:2;2595:9;2591:22;832:20;2560:63;;2248:391;;;;;:::o;2646:1057::-;;;;;;;;2883:3;2871:9;2862:7;2858:23;2854:33;2851:2;;;-1:-1;;2890:12;2851:2;2952:53;2997:7;2973:22;2952:53;:::i;:::-;2942:63;;3060:53;3105:7;3042:2;3085:9;3081:22;3060:53;:::i;:::-;3050:63;;3150:2;3193:9;3189:22;832:20;3158:63;;3276:52;3320:7;3258:2;3300:9;3296:22;3276:52;:::i;:::-;3266:62;;3384:50;3426:7;3365:3;3406:9;3402:22;3384:50;:::i;:::-;3374:60;;3471:3;3515:9;3511:22;832:20;3480:63;;3599:88;3679:7;3580:3;3659:9;3655:22;3599:88;:::i;:::-;3589:98;;2845:858;;;;;;;;;;:::o;3710:1059::-;;;;;;;;3948:3;3936:9;3927:7;3923:23;3919:33;3916:2;;;-1:-1;;3955:12;3916:2;4017:53;4062:7;4038:22;4017:53;:::i;:::-;4007:63;;4125:53;4170:7;4107:2;4150:9;4146:22;4125:53;:::i;:::-;4115:63;;4215:2;4258:9;4254:22;832:20;4223:63;;4323:2;4366:9;4362:22;832:20;4331:63;;4450:50;4492:7;4431:3;4472:9;4468:22;4450:50;:::i;4776:991::-;;;;;;;;4980:3;4968:9;4959:7;4955:23;4951:33;4948:2;;;-1:-1;;4987:12;4948:2;5049:53;5094:7;5070:22;5049:53;:::i;:::-;5039:63;;5157:53;5202:7;5139:2;5182:9;5178:22;5157:53;:::i;:::-;5147:63;;5247:2;5290:9;5286:22;832:20;5255:63;;5355:2;5398:9;5394:22;832:20;5363:63;;5463:3;5505:9;5501:22;967:20;14574:4;16335:5;14563:16;16312:5;16309:33;16299:2;;-1:-1;;16346:12;16299:2;4942:825;;;;-1:-1;4942:825;;;;5472:61;5570:3;5610:22;;340:20;;-1:-1;5679:3;5719:22;;;340:20;;4942:825;-1:-1;;4942:825::o;5774:360::-;;;5892:2;5880:9;5871:7;5867:23;5863:32;5860:2;;;-1:-1;;5898:12;5860:2;5960:53;6005:7;5981:22;5960:53;:::i;:::-;5950:63;;6068:50;6110:7;6050:2;6090:9;6086:22;6068:50;:::i;6141:366::-;;;6262:2;6250:9;6241:7;6237:23;6233:32;6230:2;;;-1:-1;;6268:12;6230:2;6330:53;6375:7;6351:22;6330:53;:::i;:::-;6320:63;6420:2;6459:22;;;;832:20;;-1:-1;;;6224:283::o;6514:485::-;;;;6649:2;6637:9;6628:7;6624:23;6620:32;6617:2;;;-1:-1;;6655:12;6617:2;6717:53;6762:7;6738:22;6717:53;:::i;:::-;6707:63;;6807:2;6850:9;6846:22;832:20;6815:63;;6933:50;6975:7;6915:2;6955:9;6951:22;6933:50;:::i;7006:609::-;;;;;7157:3;7145:9;7136:7;7132:23;7128:33;7125:2;;;-1:-1;;7164:12;7125:2;7226:53;7271:7;7247:22;7226:53;:::i;:::-;7216:63;;7316:2;7359:9;7355:22;832:20;7324:63;;7442:52;7486:7;7424:2;7466:9;7462:22;7442:52;:::i;:::-;7432:62;;7549:50;7591:7;7531:2;7571:9;7567:22;7549:50;:::i;:::-;7539:60;;7119:496;;;;;;;:::o;7622:235::-;;7723:2;7711:9;7702:7;7698:23;7694:32;7691:2;;;-1:-1;;7729:12;7691:2;7791:50;7833:7;7809:22;7791:50;:::i;7864:241::-;;7968:2;7956:9;7947:7;7943:23;7939:32;7936:2;;;-1:-1;;7974:12;7936:2;-1:-1;832:20;;7930:175;-1:-1;7930:175::o;9817:222::-;14369:42;14358:54;;;;8332:37;;9944:2;9929:18;;9915:124::o;10046:668::-;14369:42;14358:54;;;8191:58;;14358:54;;;;10458:2;10443:18;;8332:37;10541:2;10526:18;;8563:37;;;;14277:6;14266:18;10622:2;10607:18;;9535:36;14100:13;;14093:21;10699:3;10684:19;;8446:34;10285:3;10270:19;;10256:458::o;10721:672::-;14369:42;14358:54;;;8191:58;;14358:54;;;;11135:2;11120:18;;8332:37;11218:2;11203:18;;8563:37;;;;11301:2;11286:18;;8563:37;14100:13;;14093:21;11378:3;11363:19;;8446:34;10962:3;10947:19;;10933:460::o;11400:210::-;14100:13;;14093:21;8446:34;;11521:2;11506:18;;11492:118::o;11617:222::-;8563:37;;;11744:2;11729:18;;11715:124::o;12105:310::-;;12252:2;;12273:17;12266:47;8920:5;13723:12;13880:6;12252:2;12241:9;12237:18;13868:19;-1:-1;15331:101;15345:6;15342:1;15339:13;15331:101;;;15412:11;;;;;15406:18;15393:11;;;13908:14;15393:11;15386:39;15360:10;;15331:101;;;15447:6;15444:1;15441:13;15438:2;;;-1:-1;13908:14;15503:6;12241:9;15494:16;;15487:27;15438:2;-1:-1;15623:2;15603:14;15619:7;15599:28;9078:39;;;;13908:14;9078:39;;12223:192;-1:-1;;;12223:192::o;12422:416::-;12622:2;12636:47;;;9354:2;12607:18;;;13868:19;9390:30;13908:14;;;9370:51;9440:12;;;12593:245::o;13074:333::-;8563:37;;;13393:2;13378:18;;8563:37;13229:2;13214:18;;13200:207::o;13414:214::-;14574:4;14563:16;;;;9770:35;;13537:2;13522:18;;13508:120::o"},"methodIdentifiers":{"ASSET()":"4800d97f","ATOKEN()":"51c0e061","INCENTIVES_CONTROLLER()":"10d0ab22","LENDING_POOL()":"b4dcfc77","REWARD_TOKEN()":"99248ea7","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,uint256)":"9dc29fac","claimRewards(address,bool)":"491c011a","claimRewardsOnBehalf(address,address,bool)":"dd05aa12","claimRewardsToSelf(bool)":"45c1ace7","collectAndUpdateRewards()":"3eb2eba6","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","deposit(address,uint256,uint16,bool)":"2f2cab87","dynamicBalanceOf(address)":"44b68c3f","dynamicToStaticAmount(uint256)":"36a5a6d6","getAccRewardsPerToken()":"a135a55e","getClaimableRewards(address)":"308e401e","getDomainSeparator()":"ed24911d","getLastRewardBlock()":"bf62bee6","getLifetimeRewards()":"b3a59022","getLifetimeRewardsClaimed()":"31a5cfa4","getTotalClaimableRewards()":"7f372cff","getUnclaimedRewards(address)":"69a69e29","increaseAllowance(address,uint256)":"39509351","metaDeposit(address,address,uint256,uint16,bool,uint256,(uint8,bytes32,bytes32))":"c485852b","metaWithdraw(address,address,uint256,uint256,bool,uint256,(uint8,bytes32,bytes32))":"60266557","mint(address,uint256)":"40c10f19","name()":"06fdde03","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","rate()":"2c4e722e","staticToDynamicAmount(uint256)":"f57d0b40","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(address,uint256,bool)":"ead5d359","withdrawDynamicAmount(address,uint256,bool)":"288587ce"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"contract IERC20\",\"name\":\"underlyingAsset\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"aToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":false,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"}],\"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\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"staticAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"dynamicAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ASSET\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ATOKEN\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INCENTIVES_CONTROLLER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LENDING_POOL\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REWARD_TOKEN\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"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\":\"amount\",\"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\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"claimRewardsOnBehalf\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"claimRewardsToSelf\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectAndUpdateRewards\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"dynamicBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"dynamicToStaticAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAccRewardsPerToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getClaimableRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastRewardBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLifetimeRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLifetimeRewardsClaimed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalClaimableRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getUnclaimedRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct IStaticATokenLM.SignatureParams\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"metaDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct IStaticATokenLM.SignatureParams\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"metaWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"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\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"staticToDynamicAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"withdrawDynamicAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"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 value {ERC20} uses, unless {_setupDecimals} is called. 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}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"deposit(address,uint256,uint16,bool)\":{\"params\":{\"amount\":\"The amount of underlying `ASSET` to deposit (e.g. deposit of 100 USDC)\",\"fromUnderlying\":\"bool - `true` if the msg.sender comes with underlying tokens (e.g. USDC) - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\",\"recipient\":\"The address that will receive the static aTokens\",\"referralCode\":\"Code used to register the integrator originating the operation, for potential rewards. 0 if the action is executed directly by the user, without any middle-man\"},\"returns\":{\"_0\":\"uint256 The amount of StaticAToken minted, static balance*\"}},\"dynamicToStaticAmount(uint256)\":{\"params\":{\"amount\":\"The amount to convert from\"},\"returns\":{\"_0\":\"uint256 The static (scaled) amount*\"}},\"getDomainSeparator()\":{\"returns\":{\"_0\":\"bytes32 The domain separator*\"}},\"getTotalClaimableRewards()\":{\"returns\":{\"_0\":\"The current balance + pending rewards from the `_incentivesController`\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"rate()\":{\"returns\":{\"_0\":\"The liquidity index*\"}},\"staticToDynamicAmount(uint256)\":{\"params\":{\"amount\":\"The amount to convert from\"},\"returns\":{\"_0\":\"uint256 The dynamic amount*\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"},\"withdraw(address,uint256,bool)\":{\"params\":{\"amount\":\"The amount to withdraw, in static balance of StaticAToken\",\"recipient\":\"The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\",\"toUnderlying\":\"bool - `true` for the recipient to get underlying tokens (e.g. USDC) - `false` for the recipient to get aTokens (e.g. aUSDC)\"},\"returns\":{\"_0\":\"amountToBurn: StaticATokens burnt, static balance\",\"_1\":\"amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance*\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"collectAndUpdateRewards()\":{\"notice\":\"Claims rewards from `INCENTIVES_CONTROLLER` and updates internal accounting of rewards.\"},\"deposit(address,uint256,uint16,bool)\":{\"notice\":\"Deposits `ASSET` in the Aave protocol and mints static aTokens to msg.sender\"},\"dynamicToStaticAmount(uint256)\":{\"notice\":\"Converts an aToken or underlying amount to the what it is denominated on the aToken as scaled balance, function of the principal and the liquidity index\"},\"getDomainSeparator()\":{\"notice\":\"Function to return a dynamic domain separator, in order to be compatible with forks changing chainId\"},\"getTotalClaimableRewards()\":{\"notice\":\"Get the total claimable rewards of the contract.\"},\"rate()\":{\"notice\":\"Returns the Aave liquidity index of the underlying aToken, denominated rate here as it can be considered as an ever-increasing exchange rate\"},\"staticToDynamicAmount(uint256)\":{\"notice\":\"Converts a static amount (scaled balance on aToken) to the aToken/underlying value, using the current liquidity index on Aave\"},\"withdraw(address,uint256,bool)\":{\"notice\":\"Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockStaticATokenLM.sol\":\"MockStaticATokenLM\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\":{\"keccak256\":\"0x82df6d6c71a197051483edc2854de4aff2318d9336647706240af5bc9b70f544\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8f40c60825147183ed5b35d09c16d2eeaf5955168e4a5dd3343fa8869090aa97\",\"dweb:/ipfs/QmY1rD9qjoh6K3T4Bgfo2QFt8jTTJPdY6yV2RkGgDRsq3Z\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol\":{\"keccak256\":\"0x8d2b8caba9d7c313b1e6d13b305f9aae9304ed533b24b56345311f175a02ccd1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://37c52b721d6a59fb11dc5fdd27a633c0af3e0cb7a1044a8f6b86e9ac3d7fe1cb\",\"dweb:/ipfs/QmdMQG1kKsZtyDgxVk3ZLHkoYi442pxf1MfAKVj2B74qLj\"]},\"contracts/test/MockStaticATokenLM.sol\":{\"keccak256\":\"0xdb1ed8e29f4a1ecc69705d2851395c3e0aa41115272b0fb217f8a305bb381427\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3578286fb6147cbf18fe763cc791a3ab9025790e316b908a29561eb78d73151f\",\"dweb:/ipfs/QmZbrSoXE4R7bapmDVSDjA5ho1hV9nForDH5Bdf4bBaSGd\"]}},\"version\":1}"}},"contracts/test/MockWstETH.sol":{"MockWstETH":{"abi":[{"inputs":[{"internalType":"contract IstETH","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"amount","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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_wstETHAmount","type":"uint256"}],"name":"getStETHByWstETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stETHAmount","type":"uint256"}],"name":"getWstETHByStETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stETH","outputs":[{"internalType":"contract IstETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stEthPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensPerStEth","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_wstETHAmount","type":"uint256"}],"name":"unwrap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stETHAmount","type":"uint256"}],"name":"wrap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040526714d1120d7b1600006006553480156200001d57600080fd5b506040516200119038038062001190833981810160405260208110156200004357600080fd5b5051604080518082018252601481527f57726170706564205374616b65642045746865720000000000000000000000006020828101918252835180850190945260068452650eee6e88aa8960d31b908401528151919291620000a891600391620000f8565b508051620000be906004906020840190620000f8565b5050600580546001600160a01b0390931661010002610100600160a81b031960ff1990941660121793909316929092179091555062000194565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013b57805160ff19168380011785556200016b565b828001600101855582156200016b579182015b828111156200016b5782518255916020019190600101906200014e565b50620001799291506200017d565b5090565b5b808211156200017957600081556001016200017e565b610fec80620001a46000396000f3fe6080604052600436106101485760003560e01c80639576a0c8116100c0578063bb2952fc11610074578063dd62ed3e11610059578063dd62ed3e14610589578063de0e9a3e146105d1578063ea598cb0146105fb57610206565b8063bb2952fc14610521578063c1fe3e481461054b57610206565b8063a457c2d7116100a5578063a457c2d71461046b578063a9059cbb146104b1578063b0e38900146104f757610206565b80639576a0c81461044157806395d89b411461045657610206565b806323b872dd11610117578063313ce567116100fc578063313ce5671461039057806339509351146103bb57806370a082311461040157610206565b806323b872dd1461032b5780632c4e722e1461037b57610206565b8063035faf821461020b57806306fdde0314610232578063095ea7b3146102bc57806318160ddd1461031657610206565b3661020657600554604080517fa1903eab000000000000000000000000000000000000000000000000000000008152306004820152905161010090920473ffffffffffffffffffffffffffffffffffffffff169163a1903eab913491602480830192602092919082900301818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b50505050506040513d60208110156101ef57600080fd5b506102049050336101ff34610625565b610642565b005b600080fd5b34801561021757600080fd5b506102206106fb565b60408051918252519081900360200190f35b34801561023e57600080fd5b50610247610713565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610281578181015183820152602001610269565b50505050905090810190601f1680156102ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102c857600080fd5b50610302600480360360408110156102df57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107c7565b604080519115158252519081900360200190f35b34801561032257600080fd5b506102206107dd565b34801561033757600080fd5b506103026004803603606081101561034e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107e3565b34801561038757600080fd5b50610220610844565b34801561039c57600080fd5b506103a561084a565b6040805160ff9092168252519081900360200190f35b3480156103c757600080fd5b50610302600480360360408110156103de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610853565b34801561040d57600080fd5b506102206004803603602081101561042457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610896565b34801561044d57600080fd5b506102206108be565b34801561046257600080fd5b506102476108d1565b34801561047757600080fd5b506103026004803603604081101561048e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610950565b3480156104bd57600080fd5b50610302600480360360408110156104d457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610996565b34801561050357600080fd5b506102206004803603602081101561051a57600080fd5b5035610625565b34801561052d57600080fd5b506102206004803603602081101561054457600080fd5b50356109a3565b34801561055757600080fd5b506105606109ba565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561059557600080fd5b50610220600480360360408110156105ac57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166109db565b3480156105dd57600080fd5b50610220600480360360208110156105f457600080fd5b5035610a13565b34801561060757600080fd5b506102206004803603602081101561061e57600080fd5b5035610ade565b600061063c60065483610ba690919063ffffffff16565b92915050565b61064e60008383610bf7565b6106686106638261065d6107dd565b90610bfc565b610c15565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546106989082610bfc565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600061070e670de0b6b3a76400006109a3565b905090565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107bd5780601f10610792576101008083540402835291602001916107bd565b820191906000526020600020905b8154815290600101906020018083116107a057829003601f168201915b5050505050905090565b60006107d4338484610c1a565b50600192915050565b60025490565b60006107f0848484610c89565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461083a918691610835908661019e610db2565b610c1a565b5060019392505050565b60065481565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107d49185906108359086610bfc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600061070e670de0b6b3a7640000610625565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107bd5780601f10610792576101008083540402835291602001916107bd565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107d4918590610835908661019f610db2565b60006107d4338484610c89565b600061063c60065483610dc890919063ffffffff16565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000610a1f3383610dfe565b6000610a2a836109a3565b600554604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101849052905192935061010090910473ffffffffffffffffffffffffffffffffffffffff169163a9059cbb916044808201926020929091908290030181600087803b158015610aab57600080fd5b505af1158015610abf573d6000803e3d6000fd5b505050506040513d6020811015610ad557600080fd5b50909392505050565b600554604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490529051600092610100900473ffffffffffffffffffffffffffffffffffffffff16916323b872dd91606480830192602092919082900301818787803b158015610b6257600080fd5b505af1158015610b76573d6000803e3d6000fd5b505050506040513d6020811015610b8c57600080fd5b5060009050610b9a83610625565b905061063c3382610642565b6000610bb58215156004610eee565b82610bc25750600061063c565b670de0b6b3a764000083810290610be590858381610bdc57fe5b04146005610eee565b828181610bee57fe5b0491505061063c565b505050565b6000828201610c0e8482101583610eee565b9392505050565b600255565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610cad73ffffffffffffffffffffffffffffffffffffffff84161515610198610eee565b610cd173ffffffffffffffffffffffffffffffffffffffff83161515610199610eee565b610cdc838383610bf7565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610d0f90826101a0610db2565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610d4b9082610bfc565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610dc18484111583610eee565b5050900390565b6000828202610dec841580610de5575083858381610de257fe5b04145b6003610eee565b670de0b6b3a764000090049392505050565b610e2273ffffffffffffffffffffffffffffffffffffffff8316151561019b610eee565b610e2e82600083610bf7565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610e6190826101b2610db2565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610e9c61066382610e966107dd565b90610f00565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b81610efc57610efc81610f0e565b5050565b6000610c0e83836001610db2565b610f38817f42414c0000000000000000000000000000000000000000000000000000000000610f3b565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220fbac38dcbbc5145574c9b5aa1882aa7804d6dda61580ef9ff027c055243e9d3a64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH8 0x14D1120D7B160000 PUSH1 0x6 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1190 CODESIZE SUB DUP1 PUSH3 0x1190 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH32 0x57726170706564205374616B6564204574686572000000000000000000000000 PUSH1 0x20 DUP3 DUP2 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE PUSH1 0x6 DUP5 MSTORE PUSH6 0xEEE6E88AA89 PUSH1 0xD3 SHL SWAP1 DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH3 0xA8 SWAP2 PUSH1 0x3 SWAP2 PUSH3 0xF8 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0xBE SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0xF8 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT PUSH1 0xFF NOT SWAP1 SWAP5 AND PUSH1 0x12 OR SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP PUSH3 0x194 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x13B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x16B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x16B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x16B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x14E JUMP JUMPDEST POP PUSH3 0x179 SWAP3 SWAP2 POP PUSH3 0x17D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x179 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x17E JUMP JUMPDEST PUSH2 0xFEC DUP1 PUSH3 0x1A4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x148 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9576A0C8 GT PUSH2 0xC0 JUMPI DUP1 PUSH4 0xBB2952FC GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0xDE0E9A3E EQ PUSH2 0x5D1 JUMPI DUP1 PUSH4 0xEA598CB0 EQ PUSH2 0x5FB JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0xBB2952FC EQ PUSH2 0x521 JUMPI DUP1 PUSH4 0xC1FE3E48 EQ PUSH2 0x54B JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x46B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x4B1 JUMPI DUP1 PUSH4 0xB0E38900 EQ PUSH2 0x4F7 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x9576A0C8 EQ PUSH2 0x441 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x456 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x401 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x37B JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x35FAF82 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x316 JUMPI PUSH2 0x206 JUMP JUMPDEST CALLDATASIZE PUSH2 0x206 JUMPI PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA1903EAB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x100 SWAP1 SWAP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xA1903EAB SWAP2 CALLVALUE SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x204 SWAP1 POP CALLER PUSH2 0x1FF CALLVALUE PUSH2 0x625 JUMP JUMPDEST PUSH2 0x642 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x6FB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x247 PUSH2 0x713 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x281 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x269 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2AE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7C7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x7DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x844 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x84A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x853 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x896 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x8BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x247 PUSH2 0x8D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x477 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x48E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x950 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x996 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x503 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x625 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x544 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x560 PUSH2 0x9BA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x9DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA13 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xADE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63C PUSH1 0x6 SLOAD DUP4 PUSH2 0xBA6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x64E PUSH1 0x0 DUP4 DUP4 PUSH2 0xBF7 JUMP JUMPDEST PUSH2 0x668 PUSH2 0x663 DUP3 PUSH2 0x65D PUSH2 0x7DD JUMP JUMPDEST SWAP1 PUSH2 0xBFC JUMP JUMPDEST PUSH2 0xC15 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x698 SWAP1 DUP3 PUSH2 0xBFC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH8 0xDE0B6B3A7640000 PUSH2 0x9A3 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7BD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x792 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7BD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7A0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D4 CALLER DUP5 DUP5 PUSH2 0xC1A JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F0 DUP5 DUP5 DUP5 PUSH2 0xC89 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x83A SWAP2 DUP7 SWAP2 PUSH2 0x835 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xDB2 JUMP JUMPDEST PUSH2 0xC1A JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7D4 SWAP2 DUP6 SWAP1 PUSH2 0x835 SWAP1 DUP7 PUSH2 0xBFC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH8 0xDE0B6B3A7640000 PUSH2 0x625 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7BD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x792 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7BD JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7D4 SWAP2 DUP6 SWAP1 PUSH2 0x835 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xDB2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D4 CALLER DUP5 DUP5 PUSH2 0xC89 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63C PUSH1 0x6 SLOAD DUP4 PUSH2 0xDC8 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA1F CALLER DUP4 PUSH2 0xDFE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA2A DUP4 PUSH2 0x9A3 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH2 0x100 SWAP1 SWAP2 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xABF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB76 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH2 0xB9A DUP4 PUSH2 0x625 JUMP JUMPDEST SWAP1 POP PUSH2 0x63C CALLER DUP3 PUSH2 0x642 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBB5 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0xEEE JUMP JUMPDEST DUP3 PUSH2 0xBC2 JUMPI POP PUSH1 0x0 PUSH2 0x63C JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 DUP2 MUL SWAP1 PUSH2 0xBE5 SWAP1 DUP6 DUP4 DUP2 PUSH2 0xBDC JUMPI INVALID JUMPDEST DIV EQ PUSH1 0x5 PUSH2 0xEEE JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0xBEE JUMPI INVALID JUMPDEST DIV SWAP2 POP POP PUSH2 0x63C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xC0E DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xEEE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xCAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xEEE JUMP JUMPDEST PUSH2 0xCD1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xEEE JUMP JUMPDEST PUSH2 0xCDC DUP4 DUP4 DUP4 PUSH2 0xBF7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xD0F SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xDB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xD4B SWAP1 DUP3 PUSH2 0xBFC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDC1 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xEEE JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0xDEC DUP5 ISZERO DUP1 PUSH2 0xDE5 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0xDE2 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0xEEE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xE22 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xEEE JUMP JUMPDEST PUSH2 0xE2E DUP3 PUSH1 0x0 DUP4 PUSH2 0xBF7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE61 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xDB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xE9C PUSH2 0x663 DUP3 PUSH2 0xE96 PUSH2 0x7DD JUMP JUMPDEST SWAP1 PUSH2 0xF00 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH2 0xEFC JUMPI PUSH2 0xEFC DUP2 PUSH2 0xF0E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC0E DUP4 DUP4 PUSH1 0x1 PUSH2 0xDB2 JUMP JUMPDEST PUSH2 0xF38 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xF3B JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFB 0xAC CODESIZE 0xDC 0xBB 0xC5 EQ SSTORE PUSH21 0xC9B5AA1882AA7804D6DDA61580EF9FF027C055243E SWAP14 GASPRICE PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1062:1487:83:-:0;;;1197:6;1175:28;;1210:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1210:96:83;2052:137:50;;;;;;;;;;;;1210:96:83;2052:137:50;;;;;;;;;;;;;;;;;-1:-1:-1;;;2052:137:50;;;;2118:13;;2052:137;;;2118:13;;:5;;:13;:::i;:::-;-1:-1:-1;2141:17:50;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:50;:14;;-1:-1:-1;;;;;1286:13:83;;::::1;2168:14:50::0;1286:13:83::1;-1:-1:-1::0;;;;;;;;2168:14:50;;;2180:2;2168:14;1286:13:83;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;1062:1487:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1062:1487:83;;;-1:-1:-1;1062:1487:83;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106101485760003560e01c80639576a0c8116100c0578063bb2952fc11610074578063dd62ed3e11610059578063dd62ed3e14610589578063de0e9a3e146105d1578063ea598cb0146105fb57610206565b8063bb2952fc14610521578063c1fe3e481461054b57610206565b8063a457c2d7116100a5578063a457c2d71461046b578063a9059cbb146104b1578063b0e38900146104f757610206565b80639576a0c81461044157806395d89b411461045657610206565b806323b872dd11610117578063313ce567116100fc578063313ce5671461039057806339509351146103bb57806370a082311461040157610206565b806323b872dd1461032b5780632c4e722e1461037b57610206565b8063035faf821461020b57806306fdde0314610232578063095ea7b3146102bc57806318160ddd1461031657610206565b3661020657600554604080517fa1903eab000000000000000000000000000000000000000000000000000000008152306004820152905161010090920473ffffffffffffffffffffffffffffffffffffffff169163a1903eab913491602480830192602092919082900301818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b50505050506040513d60208110156101ef57600080fd5b506102049050336101ff34610625565b610642565b005b600080fd5b34801561021757600080fd5b506102206106fb565b60408051918252519081900360200190f35b34801561023e57600080fd5b50610247610713565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610281578181015183820152602001610269565b50505050905090810190601f1680156102ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102c857600080fd5b50610302600480360360408110156102df57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107c7565b604080519115158252519081900360200190f35b34801561032257600080fd5b506102206107dd565b34801561033757600080fd5b506103026004803603606081101561034e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107e3565b34801561038757600080fd5b50610220610844565b34801561039c57600080fd5b506103a561084a565b6040805160ff9092168252519081900360200190f35b3480156103c757600080fd5b50610302600480360360408110156103de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610853565b34801561040d57600080fd5b506102206004803603602081101561042457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610896565b34801561044d57600080fd5b506102206108be565b34801561046257600080fd5b506102476108d1565b34801561047757600080fd5b506103026004803603604081101561048e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610950565b3480156104bd57600080fd5b50610302600480360360408110156104d457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610996565b34801561050357600080fd5b506102206004803603602081101561051a57600080fd5b5035610625565b34801561052d57600080fd5b506102206004803603602081101561054457600080fd5b50356109a3565b34801561055757600080fd5b506105606109ba565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561059557600080fd5b50610220600480360360408110156105ac57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166109db565b3480156105dd57600080fd5b50610220600480360360208110156105f457600080fd5b5035610a13565b34801561060757600080fd5b506102206004803603602081101561061e57600080fd5b5035610ade565b600061063c60065483610ba690919063ffffffff16565b92915050565b61064e60008383610bf7565b6106686106638261065d6107dd565b90610bfc565b610c15565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546106989082610bfc565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600061070e670de0b6b3a76400006109a3565b905090565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107bd5780601f10610792576101008083540402835291602001916107bd565b820191906000526020600020905b8154815290600101906020018083116107a057829003601f168201915b5050505050905090565b60006107d4338484610c1a565b50600192915050565b60025490565b60006107f0848484610c89565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461083a918691610835908661019e610db2565b610c1a565b5060019392505050565b60065481565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107d49185906108359086610bfc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600061070e670de0b6b3a7640000610625565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107bd5780601f10610792576101008083540402835291602001916107bd565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107d4918590610835908661019f610db2565b60006107d4338484610c89565b600061063c60065483610dc890919063ffffffff16565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000610a1f3383610dfe565b6000610a2a836109a3565b600554604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101849052905192935061010090910473ffffffffffffffffffffffffffffffffffffffff169163a9059cbb916044808201926020929091908290030181600087803b158015610aab57600080fd5b505af1158015610abf573d6000803e3d6000fd5b505050506040513d6020811015610ad557600080fd5b50909392505050565b600554604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490529051600092610100900473ffffffffffffffffffffffffffffffffffffffff16916323b872dd91606480830192602092919082900301818787803b158015610b6257600080fd5b505af1158015610b76573d6000803e3d6000fd5b505050506040513d6020811015610b8c57600080fd5b5060009050610b9a83610625565b905061063c3382610642565b6000610bb58215156004610eee565b82610bc25750600061063c565b670de0b6b3a764000083810290610be590858381610bdc57fe5b04146005610eee565b828181610bee57fe5b0491505061063c565b505050565b6000828201610c0e8482101583610eee565b9392505050565b600255565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610cad73ffffffffffffffffffffffffffffffffffffffff84161515610198610eee565b610cd173ffffffffffffffffffffffffffffffffffffffff83161515610199610eee565b610cdc838383610bf7565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610d0f90826101a0610db2565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610d4b9082610bfc565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610dc18484111583610eee565b5050900390565b6000828202610dec841580610de5575083858381610de257fe5b04145b6003610eee565b670de0b6b3a764000090049392505050565b610e2273ffffffffffffffffffffffffffffffffffffffff8316151561019b610eee565b610e2e82600083610bf7565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610e6190826101b2610db2565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610e9c61066382610e966107dd565b90610f00565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b81610efc57610efc81610f0e565b5050565b6000610c0e83836001610db2565b610f38817f42414c0000000000000000000000000000000000000000000000000000000000610f3b565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220fbac38dcbbc5145574c9b5aa1882aa7804d6dda61580ef9ff027c055243e9d3a64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x148 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9576A0C8 GT PUSH2 0xC0 JUMPI DUP1 PUSH4 0xBB2952FC GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0xDE0E9A3E EQ PUSH2 0x5D1 JUMPI DUP1 PUSH4 0xEA598CB0 EQ PUSH2 0x5FB JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0xBB2952FC EQ PUSH2 0x521 JUMPI DUP1 PUSH4 0xC1FE3E48 EQ PUSH2 0x54B JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x46B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x4B1 JUMPI DUP1 PUSH4 0xB0E38900 EQ PUSH2 0x4F7 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x9576A0C8 EQ PUSH2 0x441 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x456 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x401 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x37B JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x35FAF82 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x316 JUMPI PUSH2 0x206 JUMP JUMPDEST CALLDATASIZE PUSH2 0x206 JUMPI PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA1903EAB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x100 SWAP1 SWAP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xA1903EAB SWAP2 CALLVALUE SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x204 SWAP1 POP CALLER PUSH2 0x1FF CALLVALUE PUSH2 0x625 JUMP JUMPDEST PUSH2 0x642 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x6FB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x247 PUSH2 0x713 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x281 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x269 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2AE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7C7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x7DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x844 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x84A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x853 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x896 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x8BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x247 PUSH2 0x8D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x477 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x48E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x950 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x996 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x503 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x625 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x544 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x560 PUSH2 0x9BA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x9DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA13 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xADE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63C PUSH1 0x6 SLOAD DUP4 PUSH2 0xBA6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x64E PUSH1 0x0 DUP4 DUP4 PUSH2 0xBF7 JUMP JUMPDEST PUSH2 0x668 PUSH2 0x663 DUP3 PUSH2 0x65D PUSH2 0x7DD JUMP JUMPDEST SWAP1 PUSH2 0xBFC JUMP JUMPDEST PUSH2 0xC15 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x698 SWAP1 DUP3 PUSH2 0xBFC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH8 0xDE0B6B3A7640000 PUSH2 0x9A3 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7BD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x792 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7BD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7A0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D4 CALLER DUP5 DUP5 PUSH2 0xC1A JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F0 DUP5 DUP5 DUP5 PUSH2 0xC89 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x83A SWAP2 DUP7 SWAP2 PUSH2 0x835 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xDB2 JUMP JUMPDEST PUSH2 0xC1A JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7D4 SWAP2 DUP6 SWAP1 PUSH2 0x835 SWAP1 DUP7 PUSH2 0xBFC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH8 0xDE0B6B3A7640000 PUSH2 0x625 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7BD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x792 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7BD JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7D4 SWAP2 DUP6 SWAP1 PUSH2 0x835 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xDB2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D4 CALLER DUP5 DUP5 PUSH2 0xC89 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63C PUSH1 0x6 SLOAD DUP4 PUSH2 0xDC8 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA1F CALLER DUP4 PUSH2 0xDFE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA2A DUP4 PUSH2 0x9A3 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH2 0x100 SWAP1 SWAP2 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xABF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB76 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH2 0xB9A DUP4 PUSH2 0x625 JUMP JUMPDEST SWAP1 POP PUSH2 0x63C CALLER DUP3 PUSH2 0x642 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBB5 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0xEEE JUMP JUMPDEST DUP3 PUSH2 0xBC2 JUMPI POP PUSH1 0x0 PUSH2 0x63C JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 DUP2 MUL SWAP1 PUSH2 0xBE5 SWAP1 DUP6 DUP4 DUP2 PUSH2 0xBDC JUMPI INVALID JUMPDEST DIV EQ PUSH1 0x5 PUSH2 0xEEE JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0xBEE JUMPI INVALID JUMPDEST DIV SWAP2 POP POP PUSH2 0x63C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xC0E DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xEEE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xCAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xEEE JUMP JUMPDEST PUSH2 0xCD1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xEEE JUMP JUMPDEST PUSH2 0xCDC DUP4 DUP4 DUP4 PUSH2 0xBF7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xD0F SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xDB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xD4B SWAP1 DUP3 PUSH2 0xBFC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDC1 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xEEE JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0xDEC DUP5 ISZERO DUP1 PUSH2 0xDE5 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0xDE2 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0xEEE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xE22 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xEEE JUMP JUMPDEST PUSH2 0xE2E DUP3 PUSH1 0x0 DUP4 PUSH2 0xBF7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xE61 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xDB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xE9C PUSH2 0x663 DUP3 PUSH2 0xE96 PUSH2 0x7DD JUMP JUMPDEST SWAP1 PUSH2 0xF00 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH2 0xEFC JUMPI PUSH2 0xEFC DUP2 PUSH2 0xF0E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC0E DUP4 DUP4 PUSH1 0x1 PUSH2 0xDB2 JUMP JUMPDEST PUSH2 0xF38 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xF3B JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFB 0xAC CODESIZE 0xDC 0xBB 0xC5 EQ SSTORE PUSH21 0xC9B5AA1882AA7804D6DDA61580EF9FF027C055243E SWAP14 GASPRICE PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1062:1487:83:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:5;;:47;;;;;;1947:4;1906:47;;;;;;:5;;;;;;;:12;;1927:9;;1906:47;;;;;;;;;;;;;;1927:9;1906:5;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1963:46:83;;-1:-1:-1;1969:10:83;1981:27;1998:9;1981:16;:27::i;:::-;1963:5;:46::i;:::-;1062:1487;;;;;2310:115;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2254:81:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;;;;;;;;;;;:::i;5488:386::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:50;;;;;;;;;;;;;;;;;;:::i;1175:28:83:-;;;;;;;;;;;;;:::i;3156:81:50:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6269:211;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:50;;;;;;;;;:::i;4022:117::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:50;;;;:::i;2431:116:83:-;;;;;;;;;;;;;:::i;2448:85:50:-;;;;;;;;;;;;;:::i;6967:312::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:50;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:50;;;;;;;;;:::i;2022:137:83:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2022:137:83;;:::i;2165:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2165:139:83;;:::i;1141:28::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4570:149:50;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:50;;;;;;;;;;;:::i;1599:264:83:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1599:264:83;;:::i;1312:281::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1312:281:83;;:::i;2022:137::-;2100:7;2126:26;2147:4;;2126:12;:20;;:26;;;;:::i;:::-;2119:33;2022:137;-1:-1:-1;;2022:137:83:o;8583:297:50:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;2310:115:83:-;2367:7;2393:25;2410:7;2393:16;:25::i;:::-;2386:32;;2310:115;:::o;2254:81:50:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:50;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;10712:3:14;5752:35:50;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:50;5488:386;;;;;:::o;1175:28:83:-;;;;:::o;3156:81:50:-;3221:9;;;;3156:81;:::o;6269:211::-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;4022:117::-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;2431:116:83:-;2489:7;2515:25;2532:7;2515:16;:25::i;2448:85:50:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;6967:312;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;10786:3:14;7143:36:50;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;2165:139:83:-;2244:7;2270:27;2292:4;;2270:13;:21;;:27;;;;:::i;1141:28::-;;;;;;;;;:::o;4570:149:50:-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;1599:264:83:-;1665:7;1684:32;1690:10;1702:13;1684:5;:32::i;:::-;1726:19;1748:31;1765:13;1748:16;:31::i;:::-;1789:5;;:39;;;;;;1804:10;1789:39;;;;;;;;;;;;;;-1:-1:-1;1789:5:83;;;;;;;:14;;:39;;;;;;;;;;;;;;;-1:-1:-1;1789:5:83;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1845:11:83;;1599:264;-1:-1:-1;;;1599:264:83:o;1312:281::-;1394:5;;:59;;;;;;1413:10;1394:59;;;;1433:4;1394:59;;;;;;;;;;;;-1:-1:-1;;1394:5:83;;;;;;:18;;:59;;;;;;;;;;;;;;-1:-1:-1;1394:5:83;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1463:20:83;;-1:-1:-1;1486:30:83;1503:12;1486:16;:30::i;:::-;1463:53;;1526:31;1532:10;1544:12;1526:5;:31::i;2628:355:45:-;2690:7;2709:38;2718:6;;;5318:1:14;2709:8:45;:38::i;:::-;2762:6;2758:219;;-1:-1:-1;2791:1:45;2784:8;;2758:219;945:4;2843:7;;;;2864:51;;2843:1;:7;:1;2873:13;;;;;:20;5366:1:14;2864:8:45;:51::i;:::-;2965:1;2953:9;:13;;;;;;2946:20;;;;;11245:183:50;;;;:::o;966:167:57:-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:57:o;3870:94:50:-;3937:12;:20;3870:94::o;10034:213::-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10308:3:14;7880:8:50;:71::i;:::-;7961:72;7970:23;;;;;10376:3:14;7961:8:50;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;10854:3:14;8122:21:50;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:57:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:57;;;1816:206::o;1790:209:45:-;1852:7;1889:5;;;1904:57;1913:6;;;:26;;;1938:1;1933;1923:7;:11;;;;;;:16;1913:26;5269:1:14;1904:8:45;:57::i;:::-;945:4;1979:13;;;;-1:-1:-1;;;1790:209:45:o;9200:411:50:-;9275:68;9284:21;;;;;10506:3:14;9275:8:50;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;11950:3:14;9435:22:50;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;918:101:14:-;987:9;982:34;;998:18;1006:9;998:7;:18::i;:::-;918:101;;:::o;1404:121:57:-;1462:7;1488:30;1492:1;1495;5172::14;1488:3:57;:30::i;1437:126:14:-;1484:28;1492:9;1484:28;:7;:28::i;:::-;1437:126;:::o;1670:3378::-;4395:66;1732:18;4383:79;;;4601:66;4595:4;4588:80;4743:1;4737:4;4730:15;2871:2;2904:18;;;2949;;;2876:4;2945:29;;;3747:1;3838:14;2856:18;;;;3827:26;;;;2997:18;;;;3044;;;3040:29;;3859:2;3855:17;3823:50;3737:4;3743:18;;;;;;3733:29;3729:2;3725:38;3802:72;;;;3797:3;3793:82;4810:4;4803:26;1761:14;;;;;5036:3;;5026:14"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","getStETHByWstETH(uint256)":"bb2952fc","getWstETHByStETH(uint256)":"b0e38900","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","rate()":"2c4e722e","stETH()":"c1fe3e48","stEthPerToken()":"035faf82","symbol()":"95d89b41","tokensPerStEth()":"9576a0c8","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","unwrap(uint256)":"de0e9a3e","wrap(uint256)":"ea598cb0"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IstETH\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"amount\",\"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\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_wstETHAmount\",\"type\":\"uint256\"}],\"name\":\"getStETHByWstETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_stETHAmount\",\"type\":\"uint256\"}],\"name\":\"getWstETHByStETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stETH\",\"outputs\":[{\"internalType\":\"contract IstETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stEthPerToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokensPerStEth\",\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_wstETHAmount\",\"type\":\"uint256\"}],\"name\":\"unwrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_stETHAmount\",\"type\":\"uint256\"}],\"name\":\"wrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"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 value {ERC20} uses, unless {_setupDecimals} is called. 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}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getStETHByWstETH(uint256)\":{\"params\":{\"_wstETHAmount\":\"amount of wstETH\"},\"returns\":{\"_0\":\"Amount of stETH for a given wstETH amount\"}},\"getWstETHByStETH(uint256)\":{\"params\":{\"_stETHAmount\":\"amount of stETH\"},\"returns\":{\"_0\":\"Amount of wstETH for a given stETH amount\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"stEthPerToken()\":{\"returns\":{\"_0\":\"Amount of stETH for 1 wstETH\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"tokensPerStEth()\":{\"returns\":{\"_0\":\"Amount of wstETH for a 1 stETH\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"},\"unwrap(uint256)\":{\"details\":\"Requirements: - `_wstETHAmount` must be non-zero - msg.sender must have at least `_wstETHAmount` wstETH.\",\"params\":{\"_wstETHAmount\":\"amount of wstETH to uwrap in exchange for stETH\"},\"returns\":{\"_0\":\"Amount of stETH user receives after unwrap\"}},\"wrap(uint256)\":{\"details\":\"Requirements: - `_stETHAmount` must be non-zero - msg.sender must approve at least `_stETHAmount` stETH to this contract. - msg.sender must have at least `_stETHAmount` of stETH. User should first approve _stETHAmount to the WstETH contract\",\"params\":{\"_stETHAmount\":\"amount of stETH to wrap in exchange for wstETH\"},\"returns\":{\"_0\":\"Amount of wstETH user receives after wrap\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getStETHByWstETH(uint256)\":{\"notice\":\"Get amount of stETH for a given amount of wstETH\"},\"getWstETHByStETH(uint256)\":{\"notice\":\"Get amount of wstETH for a given amount of stETH\"},\"stEthPerToken()\":{\"notice\":\"Get amount of wstETH for a one stETH\"},\"tokensPerStEth()\":{\"notice\":\"Get amount of stETH for a one wstETH\"},\"unwrap(uint256)\":{\"notice\":\"Exchanges wstETH to stETH\"},\"wrap(uint256)\":{\"notice\":\"Exchanges stETH to wstETH\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockWstETH.sol\":\"MockWstETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x0a18e547a5a02960715d13222c38671444bf2de3153321aaa4c2e1c6a6c3dc86\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://422513642fe275dd59c6bcc04b50eccce31c1bf2e666625ccf95be443726da41\",\"dweb:/ipfs/QmNLsoUmZxWKdgeDTch84hGrgzLsriqJaeNU5NFdRuNAnC\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x2e5cd2e8ce3f3380853a42af5891f787caa27d4aa5f5de0cd18f2f4ecf085f9c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae8aad1c72dd6ad70d9377d8b025af8ff9648fb99fcac4ed101c3ffe9d74c082\",\"dweb:/ipfs/QmQ5A29nCNj72ckV23cCEANomh5tt5UJkL4938GLYPEn4Q\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\":{\"keccak256\":\"0x63ab39ba66fa4d4dd481433cb7e38b3f4b4ef70f93849baa4dbfb505b0a32672\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://96117b89d70c2c7d33072f8d86a7193f22015493e568d0e13e9fdb15b7f912bb\",\"dweb:/ipfs/QmahkTXJxVrCozp3ivzEyh562Fnz3z5oetNiy9AmjugoJr\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x1ac831deb4f3dcea6c5f67a2bc83d49a9a7434029a4d6cc386b086a7f8fce369\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://492a6ea2320206e8956c15ebf326de8dbba3c3869014d7de4959bdb856ecd892\",\"dweb:/ipfs/QmSuPXCvQJyTe2YbSE9sgTv64nMuoZrHH7Y2LPG7cVbJG7\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/test/MockWstETH.sol\":{\"keccak256\":\"0x45801b85b3bf400fc3ca561f019f25dc0400925a91130a34302ffde12965510d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9807b2d347026c2f042752839c196d3cd4b48638cf6923ffa80f9248e1a750a8\",\"dweb:/ipfs/QmQQXeKqC5No9iaFh9jVSBdiztiYXvaefMLge9fn6H5Rg3\"]}},\"version\":1}"}},"contracts/test/TestWETH.sol":{"TestWETH":{"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":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","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":"src","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Withdrawal","type":"event"},{"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":"guy","type":"address"},{"internalType":"uint256","name":"wad","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":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"destinatary","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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e916000919061007a565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a9160019161007a565b506002805460ff1916601217905534801561007457600080fd5b5061010d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100bb57805160ff19168380011785556100e8565b828001600101855582156100e8579182015b828111156100e85782518255916020019190600101906100cd565b506100f49291506100f8565b5090565b5b808211156100f457600081556001016100f9565b6109eb8061011c6000396000f3fe6080604052600436106100cb5760003560e01c806340c10f1911610074578063a9059cbb1161004e578063a9059cbb1461032a578063d0e30db014610370578063dd62ed3e14610378576100da565b806340c10f191461028f57806370a08231146102d557806395d89b4114610315576100da565b806323b872dd116100a557806323b872dd146101ea5780632e1a7d4d1461023a578063313ce56714610264576100da565b806306fdde03146100df578063095ea7b31461016957806318160ddd146101c3576100da565b366100da576100d86103c0565b005b600080fd5b3480156100eb57600080fd5b506100f461040f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012e578181015183820152602001610116565b50505050905090810190601f16801561015b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017557600080fd5b506101af6004803603604081101561018c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104bb565b604080519115158252519081900360200190f35b3480156101cf57600080fd5b506101d861052e565b60408051918252519081900360200190f35b3480156101f657600080fd5b506101af6004803603606081101561020d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610532565b34801561024657600080fd5b506100d86004803603602081101561025d57600080fd5b5035610796565b34801561027057600080fd5b5061027961088d565b6040805160ff9092168252519081900360200190f35b34801561029b57600080fd5b506100d8600480360360408110156102b257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610896565b3480156102e157600080fd5b506101d8600480360360208110156102f857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108fa565b34801561032157600080fd5b506100f461090c565b34801561033657600080fd5b506101af6004803603604081101561034d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610984565b6100d86103c0565b34801561038457600080fd5b506101d86004803603604081101561039b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610998565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104b35780601f10610488576101008083540402835291602001916104b3565b820191906000526020600020905b81548152906001019060200180831161049657829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156105c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e53554646494349454e545f42414c414e4345000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416331480159061063c575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156107185773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156106e057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414c4c4f57414e434500000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b3360009081526003602052604090205481111561081457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e53554646494349454e545f42414c414e4345000000000000000000000000604482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610853573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604091829020805485019055815184815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a25050565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104b35780601f10610488576101008083540402835291602001916104b3565b6000610991338484610532565b9392505050565b60046020908152600092835260408084209091529082529020548156fea264697066735822122089a5217b8cbaf7340a2fcf08b478f764b0a0a8a986cadee055b90958dac8aacc64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH1 0xD PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH13 0x2BB930B83832B21022BA3432B9 PUSH1 0x99 SHL PUSH1 0xA0 SWAP1 DUP2 MSTORE PUSH2 0x2E SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH2 0x7A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH4 0xAE8AA89 PUSH1 0xE3 SHL PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE PUSH2 0x5A SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x7A JUMP JUMPDEST POP PUSH1 0x2 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xBB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xE8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xE8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xE8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xCD JUMP JUMPDEST POP PUSH2 0xF4 SWAP3 SWAP2 POP PUSH2 0xF8 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xF4 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xF9 JUMP JUMPDEST PUSH2 0x9EB DUP1 PUSH2 0x11C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCB JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x378 JUMPI PUSH2 0xDA JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2D5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x315 JUMPI PUSH2 0xDA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x264 JUMPI PUSH2 0xDA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1C3 JUMPI PUSH2 0xDA JUMP JUMPDEST CALLDATASIZE PUSH2 0xDA JUMPI PUSH2 0xD8 PUSH2 0x3C0 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH2 0x40F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x116 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4BB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D8 PUSH2 0x52E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x532 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x796 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x88D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x896 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH2 0x90C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x984 JUMP JUMPDEST PUSH2 0xD8 PUSH2 0x3C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x384 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x998 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD CALLVALUE SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4B3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x488 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4B3 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x496 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x5C6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F42414C414E4345000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x63C JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ ISZERO JUMPDEST ISZERO PUSH2 0x718 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414C4C4F57414E434500000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x814 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F42414C414E4345000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE MLOAD DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x853 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE DUP2 MLOAD DUP5 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4B3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x488 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4B3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x991 CALLER DUP5 DUP5 PUSH2 0x532 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP10 0xA5 0x21 PUSH28 0x8CBAF7340A2FCF08B478F764B0A0A8A986CADEE055B90958DAC8AACC PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"869:36:84:-:0;836:2078;869:36;;836:2078;869:36;;;-1:-1:-1;;;869:36:84;;;;;;-1:-1:-1;;869:36:84;;:::i;:::-;-1:-1:-1;911:29:84;;;;;;;;;;;;;-1:-1:-1;;;911:29:84;;;;;;;;;;;;:::i;:::-;-1:-1:-1;946:26:84;;;-1:-1:-1;;946:26:84;970:2;946:26;;;836:2078;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;836:2078:84;;;-1:-1:-1;836:2078:84;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100cb5760003560e01c806340c10f1911610074578063a9059cbb1161004e578063a9059cbb1461032a578063d0e30db014610370578063dd62ed3e14610378576100da565b806340c10f191461028f57806370a08231146102d557806395d89b4114610315576100da565b806323b872dd116100a557806323b872dd146101ea5780632e1a7d4d1461023a578063313ce56714610264576100da565b806306fdde03146100df578063095ea7b31461016957806318160ddd146101c3576100da565b366100da576100d86103c0565b005b600080fd5b3480156100eb57600080fd5b506100f461040f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012e578181015183820152602001610116565b50505050905090810190601f16801561015b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017557600080fd5b506101af6004803603604081101561018c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104bb565b604080519115158252519081900360200190f35b3480156101cf57600080fd5b506101d861052e565b60408051918252519081900360200190f35b3480156101f657600080fd5b506101af6004803603606081101561020d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610532565b34801561024657600080fd5b506100d86004803603602081101561025d57600080fd5b5035610796565b34801561027057600080fd5b5061027961088d565b6040805160ff9092168252519081900360200190f35b34801561029b57600080fd5b506100d8600480360360408110156102b257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610896565b3480156102e157600080fd5b506101d8600480360360208110156102f857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108fa565b34801561032157600080fd5b506100f461090c565b34801561033657600080fd5b506101af6004803603604081101561034d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610984565b6100d86103c0565b34801561038457600080fd5b506101d86004803603604081101561039b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610998565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104b35780601f10610488576101008083540402835291602001916104b3565b820191906000526020600020905b81548152906001019060200180831161049657829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156105c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e53554646494349454e545f42414c414e4345000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416331480159061063c575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156107185773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156106e057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414c4c4f57414e434500000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b3360009081526003602052604090205481111561081457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e53554646494349454e545f42414c414e4345000000000000000000000000604482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610853573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604091829020805485019055815184815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a25050565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104b35780601f10610488576101008083540402835291602001916104b3565b6000610991338484610532565b9392505050565b60046020908152600092835260408084209091529082529020548156fea264697066735822122089a5217b8cbaf7340a2fcf08b478f764b0a0a8a986cadee055b90958dac8aacc64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCB JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x378 JUMPI PUSH2 0xDA JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2D5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x315 JUMPI PUSH2 0xDA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x264 JUMPI PUSH2 0xDA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1C3 JUMPI PUSH2 0xDA JUMP JUMPDEST CALLDATASIZE PUSH2 0xDA JUMPI PUSH2 0xD8 PUSH2 0x3C0 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH2 0x40F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x116 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4BB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D8 PUSH2 0x52E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x532 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x796 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x88D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x896 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH2 0x90C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x984 JUMP JUMPDEST PUSH2 0xD8 PUSH2 0x3C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x384 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x998 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD CALLVALUE SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4B3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x488 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4B3 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x496 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x5C6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F42414C414E4345000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x63C JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ ISZERO JUMPDEST ISZERO PUSH2 0x718 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414C4C4F57414E434500000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x814 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F42414C414E4345000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE MLOAD DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x853 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE DUP2 MLOAD DUP5 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4B3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x488 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4B3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x991 CALLER DUP5 DUP5 PUSH2 0x532 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP10 0xA5 0x21 PUSH28 0x8CBAF7340A2FCF08B478F764B0A0A8A986CADEE055B90958DAC8AACC PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"836:2078:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:9;:7;:9::i;:::-;836:2078;;;;;869:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2043:189;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2043:189:84;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1930:107;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2377:535;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2377:535:84;;;;;;;;;;;;;;;;;;:::i;1432:239::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1432:239:84;;:::i;946:26::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1772:152;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1772:152:84;;;;;;;;;:::i;1089:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1089:53:84;;;;:::i;911:29::-;;;;;;;;;;;;;:::i;2238:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2238:133:84;;;;;;;;;:::i;1287:139::-;;;:::i;1148:73::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1148:73:84;;;;;;;;;;;:::i;1287:139::-;1350:10;1340:21;;;;:9;:21;;;;;;;;;:34;;1365:9;1340:34;;;;;;1389:30;;;;;;;;;;;;;;;;;1287:139::o;869:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2043:189::-;2137:10;2111:4;2127:21;;;:9;:21;;;;;;;;;:26;;;;;;;;;;;:32;;;2174:30;;;;;;;2111:4;;2127:26;;2137:10;;2174:30;;;;;;;;-1:-1:-1;2221:4:84;2043:189;;;;:::o;1930:107::-;2009:21;1930:107;:::o;2377:535::-;2517:14;;;2493:4;2517:14;;;:9;:14;;;;;;:21;-1:-1:-1;2517:21:84;2509:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2578:17;;;2585:10;2578:17;;;;:62;;-1:-1:-1;2599:14:84;;;;;;;:9;:14;;;;;;;;2614:10;2599:26;;;;;;;;2637:2;2599:41;;2578:62;2574:208;;;2664:14;;;;;;;:9;:14;;;;;;;;2679:10;2664:26;;;;;;;;:33;-1:-1:-1;2664:33:84;2656:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2738:14;;;;;;;:9;:14;;;;;;;;2753:10;2738:26;;;;;;;:33;;;;;;;2574:208;2792:14;;;;;;;;:9;:14;;;;;;;;:21;;;;;;;2823:14;;;;;;;;;;:21;;;;;;2860:23;;;;;;;2823:14;;2860:23;;;;;;;;;;;-1:-1:-1;2901:4:84;2377:535;;;;;:::o;1432:239::-;1507:10;1497:21;;;;:9;:21;;;;;;:28;-1:-1:-1;1497:28:84;1489:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:10;1560:21;;;;:9;:21;;;;;;:28;;;;;;;1598:24;;;;;;1585:3;;1598:24;;1560:21;1598:24;1585:3;1570:10;1598:24;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1637:27:84;;;;;;;;1648:10;;1637:27;;;;;;;;;;1432:239;:::o;946:26::-;;;;;;:::o;1772:152::-;1842:22;;;;;;;:9;:22;;;;;;;;;:32;;;;;;1889:28;;;;;;;;;;;;;;;;;1772:152;;:::o;1089:53::-;;;;;;;;;;;;;:::o;911:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2238:133;2307:4;2330:34;2343:10;2355:3;2360;2330:12;:34::i;:::-;2323:41;2238:133;-1:-1:-1;;;2238:133:84:o;1148:73::-;;;;;;;;;;;;;;;;;;;;;;;;:::o"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","deposit()":"d0e30db0","mint(address,uint256)":"40c10f19","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"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\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"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\":\"src\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"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\":\"guy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"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\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinatary\",\"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\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"}},\"stateVariables\":{\"allowance\":{\"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.\"},\"balanceOf\":{\"details\":\"Returns the amount of tokens owned by `account`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TestWETH.sol\":\"TestWETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"contracts/test/TestWETH.sol\":{\"keccak256\":\"0xd1fb738e861ca79bf0d37db866ca57c20f545ea233f424b38166f922c567a5f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://49543f3a71b64d14874a9f591b8fb339eef34134d53baa397032ba8c81d72ef7\",\"dweb:/ipfs/QmRz9G3xF7sp8NyFm4yHcUbrdwUXvoZF8UTdkVy8YEpNsX\"]}},\"version\":1}"}}}}} \ No newline at end of file diff --git a/pkg/deployments/tasks/20220916-batch-relayer-v4/bytecode/BalancerRelayer.json b/pkg/deployments/tasks/20220916-batch-relayer-v4/bytecode/BalancerRelayer.json new file mode 100644 index 0000000000..f96e21072c --- /dev/null +++ b/pkg/deployments/tasks/20220916-batch-relayer-v4/bytecode/BalancerRelayer.json @@ -0,0 +1,3 @@ +{ + "creationCode": "60c060405234801561001057600080fd5b5060405161078738038061078783398101604081905261002f91610052565b60016000556001600160601b0319606092831b8116608052911b1660a0526100a3565b60008060408385031215610064578182fd5b825161006f8161008b565b60208401519092506100808161008b565b809150509250929050565b6001600160a01b03811681146100a057600080fd5b50565b60805160601c60a05160601c6106b36100d46000398060fc528061020f5250806058528061012052506106b36000f3fe6080604052600436106100385760003560e01c80637678922e146100885780638d928af8146100b3578063ac9650d8146100c857610083565b36610083576100813373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102066100e8565b005b600080fd5b34801561009457600080fd5b5061009d6100fa565b6040516100aa919061050e565b60405180910390f35b3480156100bf57600080fd5b5061009d61011e565b6100db6100d6366004610480565b610142565b6040516100aa919061052f565b816100f6576100f68161026e565b5050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061014c61029b565b8167ffffffffffffffff8111801561016357600080fd5b5060405190808252806020026020018201604052801561019757816020015b60608152602001906001900390816101825790505b50905060005b82811015610257576102388484838181106101b457fe5b90506020028101906101c691906105e3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016929150506102b4565b82828151811061024457fe5b602090810291909101015260010161019d565b50610260610337565b610268610348565b92915050565b610298817f42414c000000000000000000000000000000000000000000000000000000000061034f565b50565b6102ad600260005414156101906100e8565b6002600055565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516102df91906104ef565b600060405180830381855af49150503d806000811461031a576040519150601f19603f3d011682016040523d82523d6000602084013e61031f565b606091505b509150915061032e82826103ca565b95945050505050565b4780156102985761029833826103f4565b6001600055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156103d9575080610268565b8151156103e95781518083602001fd5b6102686101ae61026e565b610403814710156101a36100e8565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516104299061050b565b60006040518083038185875af1925050503d8060008114610466576040519150601f19603f3d011682016040523d82523d6000602084013e61046b565b606091505b5050905061047b816101a46100e8565b505050565b60008060208385031215610492578182fd5b823567ffffffffffffffff808211156104a9578384fd5b818501915085601f8301126104bc578384fd5b8135818111156104ca578485fd5b86602080830285010111156104dd578485fd5b60209290920196919550909350505050565b6000825161050181846020870161064d565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156105d6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610599818989018a850161064d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01695909501860194509285019290850190600101610554565b5092979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610617578283fd5b83018035915067ffffffffffffffff821115610631578283fd5b60200191503681900382131561064657600080fd5b9250929050565b60005b83811015610668578181015183820152602001610650565b83811115610677576000848401525b5050505056fea2646970667358221220063fdaaad6c7f32fb6dd53f100269a9ea16c7241c4a9587b1f83f82a35b5424264736f6c63430007010033" +} \ No newline at end of file diff --git a/pkg/deployments/tasks/20220916-batch-relayer-v4/bytecode/BatchRelayerLibrary.json b/pkg/deployments/tasks/20220916-batch-relayer-v4/bytecode/BatchRelayerLibrary.json new file mode 100644 index 0000000000..f7b6ab8049 --- /dev/null +++ b/pkg/deployments/tasks/20220916-batch-relayer-v4/bytecode/BatchRelayerLibrary.json @@ -0,0 +1,3 @@ +{ + "creationCode": "6101606040527fae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb50960e0523480156200003657600080fd5b50604051620059f3380380620059f3833981016040819052620000599162000209565b818184806001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009657600080fd5b505afa158015620000ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d191906200025c565b6001600160601b0319606091821b81166080529082901b1660a05260405181903090620000fe90620001fb565b6200010b92919062000282565b604051809103906000f08015801562000128573d6000803e3d6000fd5b506001600160601b0319606091821b811660c05292901b90911661010052506001600160a01b0381166200015e576000620001d5565b806001600160a01b031663c1fe3e486040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200019a57600080fd5b505af1158015620001af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d591906200025c565b6001600160601b0319606091821b81166101205291901b166101405250620002b5915050565b610787806200526c83390190565b6000806000606084860312156200021e578283fd5b83516200022b816200029c565b60208501519093506200023e816200029c565b604085015190925062000251816200029c565b809150509250925092565b6000602082840312156200026e578081fd5b81516200027b816200029c565b9392505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0381168114620002b257600080fd5b50565b60805160601c60a05160601c60c05160601c60e0516101005160601c6101205160601c6101405160601c614f15620003576000398061051952806105ad528061061352806109995280610a495280610b12528061299552806129ed525080610917528061096c5280610bda5280610cb95280612ab6525080610e4c5280611b0b5250806132965250806119b5525080611ab55280611c02525050614f156000f3fe6080604052600436106101c25760003560e01c806380db15bd116100f7578063b6d2473711610095578063e8210e3c11610064578063e8210e3c146103cb578063ecc02637146103de578063efe69108146103f1578063f3cab68514610404576101c2565b8063b6d2473714610372578063d293f29014610392578063d80952d5146103a5578063db4c0e91146103b8576101c2565b80638d928af8116100d15780638d928af8146103245780638fe4624f14610339578063959fc17a1461034c578063abf6d3991461035f576101c2565b806380db15bd146102eb5780638c57198b146102fe5780638d64cfbc14610311576101c2565b8063433b0865116101645780636d307ea81161013e5780636d307ea8146102875780637ab6e03c1461029a5780637bc008f5146102ad5780637fd0e5d5146102c0576101c2565b8063433b08651461024e578063611b90dd1461026157806365ca480414610274576101c2565b80631c982441116101a05780631c982441146102025780632cbec84e146102155780632e6272ea146102285780633f85d3901461023b576101c2565b80630e248fea146101c75780631089e5e3146101dc57806318369446146101ef575b600080fd5b6101da6101d5366004613cee565b610431565b005b6101da6101ea366004613c70565b6104cc565b6101da6101fd36600461432f565b6106b6565b6101da610210366004613b9e565b6108bf565b6101da610223366004613c70565b610bbc565b6101da61023636600461442b565b610cf0565b6101da610249366004613ca4565b610e19565b6101da61025c3660046141e9565b610ee2565b6101da61026f36600461413f565b611191565b6101da610282366004614199565b6112ac565b6101da61029536600461413f565b61149f565b6101da6102a83660046141e9565b6116c1565b6101da6102bb366004614199565b6117c7565b3480156102cc57600080fd5b506102d56119b3565b6040516102e29190614791565b60405180910390f35b6101da6102f9366004613be3565b6119d7565b6101da61030c366004613e8b565b611adb565b6101da61031f3660046140a6565b611b86565b34801561033057600080fd5b506102d5611c00565b6101da610347366004613f96565b611c24565b6101da61035a366004614025565b611e4e565b6101da61036d36600461413f565b611ecb565b34801561037e57600080fd5b506101da61038d366004614114565b612081565b6101da6103a036600461413f565b612127565b6101da6103b3366004613eee565b6123af565b6101da6103c6366004613b9e565b61293d565b6101da6103d936600461413f565b612aed565b6101da6103ec366004613dbe565b612db2565b6101da6103ff36600461413f565b612eaa565b34801561041057600080fd5b5061042461041f366004614519565b612f53565b6040516102e29190614ddc565b8060005b818110156104c65783838281811061044957fe5b905060200201602081019061045e9190613b66565b6001600160a01b03166384e9bd7e336040518263ffffffff1660e01b81526004016104899190614791565b600060405180830381600087803b1580156104a357600080fd5b505af11580156104b7573d6000803e3d6000fd5b50505050806001019050610435565b50505050565b6104d582612f65565b156104e6576104e382612fb0565b91505b6040517fb0e389000000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b0e389009061054e908690600401614ddc565b60206040518083038186803b15801561056657600080fd5b505afa15801561057a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059e9190614531565b90506105d36001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684612fdb565b6001600160a01b038416301461069e576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb9061064a90879085906004016148f1565b602060405180830381600087803b15801561066457600080fd5b505af1158015610678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069c9190613e6f565b505b6106a782612f65565b156104c6576104c68282613055565b336106c46020890189613b66565b6001600160a01b031614806106ed5750306106e26020890189613b66565b6001600160a01b0316145b6107125760405162461bcd60e51b815260040161070990614cac565b60405180910390fd5b60005b8a518110156107775760008b828151811061072c57fe5b602002602001015160600151905061074381612f65565b1561076e5761075181612fb0565b8c838151811061075d57fe5b602002602001015160600181815250505b50600101610715565b506060610782611c00565b6001600160a01b031663945bcec9858e8e8e8e8e8e8e8e6040518a63ffffffff1660e01b81526004016107bc989796959493929190614ba3565b6000604051808303818588803b1580156107d557600080fd5b505af11580156107e9573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526108129190810190613d2e565b905060005b828110156108b05761083d84848381811061082e57fe5b90506040020160200135612f65565b6108595760405162461bcd60e51b815260040161070990614d1a565b6108a884848381811061086857fe5b905060400201602001356108a38487878681811061088257fe5b905060400201600001358151811061089657fe5b6020026020010151613068565b613055565b600101610817565b50505050505050505050505050565b6108c882612f65565b156108d9576108d682612fb0565b91505b6001600160a01b038416301461093c576001600160a01b03841633146109115760405162461bcd60e51b815260040161070990614cac565b61093c847f000000000000000000000000000000000000000000000000000000000000000084613082565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906109c3907f00000000000000000000000000000000000000000000000000000000000000009086906004016148f1565b602060405180830381600087803b1580156109dd57600080fd5b505af11580156109f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a159190613e6f565b506040517fea598cb00000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ea598cb090610a7e908690600401614ddc565b602060405180830381600087803b158015610a9857600080fd5b505af1158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190614531565b90506001600160a01b0384163014610b9d576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90610b4990879085906004016148f1565b602060405180830381600087803b158015610b6357600080fd5b505af1158015610b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9b9190613e6f565b505b610ba682612f65565b15610bb557610bb58282613055565b5050505050565b610bc582612f65565b15610bd657610bd382612fb0565b91505b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a1903eab84306040518363ffffffff1660e01b8152600401610c259190614791565b6020604051808303818588803b158015610c3e57600080fd5b505af1158015610c52573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c779190614531565b90506001600160a01b038416301461069e576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb9061064a90879085906004016148f1565b33610cfe6020870187613b66565b6001600160a01b03161480610d27575030610d1c6020870187613b66565b6001600160a01b0316145b610d435760405162461bcd60e51b815260040161070990614cac565b610d508660800151612f65565b15610d6857610d628660800151612fb0565b60808701525b6000610d72611c00565b6001600160a01b03166352bbbe2984898989896040518663ffffffff1660e01b8152600401610da49493929190614d51565b6020604051808303818588803b158015610dbd57600080fd5b505af1158015610dd1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610df69190614531565b9050610e0182612f65565b15610e1057610e108282613055565b50505050505050565b6040517f3b9f73840000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633b9f738490610e8590879087903390600401614959565b602060405180830381600087803b158015610e9f57600080fd5b505af1158015610eb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed79190614531565b90506106a782612f65565b610eeb83612f65565b15610efc57610ef983612fb0565b92505b600082610f7b57866001600160a01b03166351c0e0616040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610f3e57600080fd5b505af1158015610f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f769190613b82565b610fee565b866001600160a01b0316634800d97f6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fb657600080fd5b505af1158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee9190613b82565b90506001600160a01b0386163014611033576001600160a01b03861633146110285760405162461bcd60e51b815260040161070990614cac565b611033868286613082565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b39061107a908a9088906004016148f1565b602060405180830381600087803b15801561109457600080fd5b505af11580156110a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cc9190613e6f565b506040517f2f2cab870000000000000000000000000000000000000000000000000000000081526000906001600160a01b03891690632f2cab879061111b908990899086908a9060040161492d565b602060405180830381600087803b15801561113557600080fd5b505af1158015611149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116d9190614531565b905061117883612f65565b15611187576111878382613055565b5050505050505050565b61119a82612f65565b156111ab576111a882612fb0565b91505b6001600160a01b03841630146111ee576001600160a01b03841633146111e35760405162461bcd60e51b815260040161070990614cac565b6111ee848684613082565b6040517fea785a5e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b0387169063ea785a5e9061123890879087906004016148f1565b602060405180830381600087803b15801561125257600080fd5b505af1158015611266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128a9190614531565b905061129582612f65565b156112a4576112a48282613055565b505050505050565b6112b581612f65565b156112c6576112c381612fb0565b90505b6001600160a01b0383163014611309576001600160a01b03831633146112fe5760405162461bcd60e51b815260040161070990614cac565b611309838583613082565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526001600160a01b03851690632e1a7d4d9061134e908490600401614ddc565b600060405180830381600087803b15801561136857600080fd5b505af115801561137c573d6000803e3d6000fd5b505050506001600160a01b03821630146104c6576000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b1580156113cb57600080fd5b505afa1580156113df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114039190613b82565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0382169063a9059cbb9061144d90869086906004016148f1565b602060405180830381600087803b15801561146757600080fd5b505af115801561147b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a49190613e6f565b6114a882612f65565b156114b9576114b682612fb0565b91505b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114f457600080fd5b505afa158015611508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152c9190613b82565b90506001600160a01b0385163014611571576001600160a01b03851633146115665760405162461bcd60e51b815260040161070990614cac565b611571858285613082565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b3906115b890899087906004016148f1565b602060405180830381600087803b1580156115d257600080fd5b505af11580156115e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160a9190613e6f565b506040517f6e553f650000000000000000000000000000000000000000000000000000000081526000906001600160a01b03881690636e553f65906116559087908990600401614de5565b602060405180830381600087803b15801561166f57600080fd5b505af1158015611683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a79190614531565b90506116b283612f65565b15610e1057610e108382613055565b6116ca83612f65565b156116db576116d883612fb0565b92505b6001600160a01b038516301461171e576001600160a01b03851633146117135760405162461bcd60e51b815260040161070990614cac565b61171e858785613082565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081526000906001600160a01b0388169063ead5d3599061176a9088908890889060040161490a565b6040805180830381600087803b15801561178357600080fd5b505af1158015611797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bb9190614549565b915050610e0182612f65565b6117d081612f65565b156117e1576117de81612fb0565b90505b6000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561181c57600080fd5b505afa158015611830573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118549190613b82565b90506001600160a01b0384163014611899576001600160a01b038416331461188e5760405162461bcd60e51b815260040161070990614cac565b611899848284613082565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b3906118e090889086906004016148f1565b602060405180830381600087803b1580156118fa57600080fd5b505af115801561190e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119329190613e6f565b506040517f6e553f650000000000000000000000000000000000000000000000000000000081526001600160a01b03861690636e553f659061197a9085908790600401614de5565b600060405180830381600087803b15801561199457600080fd5b505af11580156119a8573d6000803e3d6000fd5b505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0384163014806119ec575082155b611a085760405162461bcd60e51b815260040161070990614ce3565b606063fa6e671d60e01b338686604051602401611a27939291906147a5565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935251611a9692869186910161475e565b60408051601f1981840301815291905290506112a46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168261311e565b6040517fc65427940000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c654279490611b4c9030908a908a908a908a908a908a906004016148ad565b600060405180830381600087803b158015611b6657600080fd5b505af1158015611b7a573d6000803e3d6000fd5b50505050505050505050565b866001600160a01b031663d505accf87611b9e611c00565b88888888886040518863ffffffff1660e01b8152600401611bc5979695949392919061486c565b600060405180830381600087803b158015611bdf57600080fd5b505af1158015611bf3573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b038516331480611c4357506001600160a01b03851630145b611c5f5760405162461bcd60e51b815260040161070990614cac565b6000611c6a88613196565b90506000611c7783612f65565b611c82576000611d17565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038316906370a0823190611cc7908990600401614791565b60206040518083038186803b158015611cdf57600080fd5b505afa158015611cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d179190614531565b9050611d2788866040015161319c565b6040860152611d34611c00565b6001600160a01b031663b95cac28858b8a8a8a6040518663ffffffff1660e01b8152600401611d669493929190614afd565b6000604051808303818588803b158015611d7f57600080fd5b505af1158015611d93573d6000803e3d6000fd5b5050505050611da183612f65565b156119a8576040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038416906370a0823190611dee908a90600401614791565b60206040518083038186803b158015611e0657600080fd5b505afa158015611e1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3e9190614531565b9050611b7a846108a383856131ca565b876001600160a01b0316638fcbaf0c88611e66611c00565b8989898989896040518963ffffffff1660e01b8152600401611e8f989796959493929190614823565b600060405180830381600087803b158015611ea957600080fd5b505af1158015611ebd573d6000803e3d6000fd5b505050505050505050505050565b611ed482612f65565b15611ee557611ee282612fb0565b91505b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611f2057600080fd5b505afa158015611f34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f589190613b82565b90506001600160a01b0385163014611f9d576001600160a01b0385163314611f925760405162461bcd60e51b815260040161070990614cac565b611f9d858285613082565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b390611fe490899087906004016148f1565b602060405180830381600087803b158015611ffe57600080fd5b505af1158015612012573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120369190613e6f565b506040517f2f4f21e20000000000000000000000000000000000000000000000000000000081526000906001600160a01b03881690632f4f21e29061165590889088906004016148f1565b61208a81612f65565b1561209b5761209881612fb0565b90505b816001600160a01b031663095ea7b36120b2611c00565b836040518363ffffffff1660e01b81526004016120d09291906148f1565b602060405180830381600087803b1580156120ea57600080fd5b505af11580156120fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121229190613e6f565b505050565b61213082612f65565b156121415761213e82612fb0565b91505b6001600160a01b0384163014612184576001600160a01b03841633146121795760405162461bcd60e51b815260040161070990614cac565b612184848684613082565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121bf57600080fd5b505afa1580156121d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f79190613b82565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03871690632e1a7d4d9061223f908690600401614ddc565b600060405180830381600087803b15801561225957600080fd5b505af115801561226d573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841691506370a08231906122b9903090600401614791565b60206040518083038186803b1580156122d157600080fd5b505afa1580156122e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123099190614531565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0383169063a9059cbb9061235390889085906004016148f1565b602060405180830381600087803b15801561236d57600080fd5b505af1158015612381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a59190613e6f565b506116b283612f65565b6001600160a01b0385163314806123ce57506001600160a01b03851630145b6123ea5760405162461bcd60e51b815260040161070990614cac565b60608167ffffffffffffffff8111801561240357600080fd5b5060405190808252806020026020018201604052801561242d578160200160208202803683370190505b50905060608267ffffffffffffffff8111801561244957600080fd5b50604051908082528060200260200182016040528015612473578160200160208202803683370190505b50905060005b838110156125e35761249085858381811061082e57fe5b6124ac5760405162461bcd60e51b815260040161070990614d1a565b85516000908686848181106124bd57fe5b90506040020160000135815181106124d157fe5b6020026020010151905086606001511561251f576124ee816131e0565b8483815181106124fa57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506125da565b612528816131e3565b6125b557612535816131e0565b6001600160a01b03166370a08231896040518263ffffffff1660e01b81526004016125609190614791565b60206040518083038186803b15801561257857600080fd5b505afa15801561258c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b09190614531565b6125c1565b876001600160a01b0316315b8383815181106125cd57fe5b6020026020010181815250505b50600101612479565b5084606001511561267a576125f6611c00565b6001600160a01b0316630f5a6efa87846040518363ffffffff1660e01b81526004016126239291906147c9565b60006040518083038186803b15801561263b57600080fd5b505afa15801561264f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126779190810190613e34565b90505b6126888886604001516131f0565b6040860152612695611c00565b6001600160a01b0316638bdb39138a8989896040518563ffffffff1660e01b81526004016126c69493929190614afd565b600060405180830381600087803b1580156126e057600080fd5b505af11580156126f4573d6000803e3d6000fd5b50606092508591505067ffffffffffffffff8111801561271357600080fd5b5060405190808252806020026020018201604052801561273d578160200160208202803683370190505b5090508560600151156127da57612752611c00565b6001600160a01b0316630f5a6efa88856040518363ffffffff1660e01b815260040161277f9291906147c9565b60006040518083038186803b15801561279757600080fd5b505afa1580156127ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127d39190810190613e34565b90506128d8565b60005b848110156128d65786516000908787848181106127f657fe5b905060400201600001358151811061280a57fe5b6020026020010151905061281d816131e3565b6128aa5761282a816131e0565b6001600160a01b03166370a082318a6040518263ffffffff1660e01b81526004016128559190614791565b60206040518083038186803b15801561286d57600080fd5b505afa158015612881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a59190614531565b6128b6565b886001600160a01b0316315b8383815181106128c257fe5b6020908102919091010152506001016127dd565b505b60005b84811015611bf3576129358686838181106128f257fe5b905060400201602001356108a385848151811061290b57fe5b602002602001015185858151811061291f57fe5b60200260200101516131ca90919063ffffffff16565b6001016128db565b61294682612f65565b156129575761295482612fb0565b91505b6001600160a01b03841630146129ba576001600160a01b038416331461298f5760405162461bcd60e51b815260040161070990614cac565b6129ba847f000000000000000000000000000000000000000000000000000000000000000084613082565b6040517fde0e9a3e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063de0e9a3e90612a22908690600401614ddc565b602060405180830381600087803b158015612a3c57600080fd5b505af1158015612a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a749190614531565b90506001600160a01b0384163014610b9d576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90610b4990879085906004016148f1565b612af682612f65565b15612b0757612b0482612fb0565b91505b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b4257600080fd5b505afa158015612b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7a9190613b82565b90506001600160a01b0385163014612bbf576001600160a01b0385163314612bb45760405162461bcd60e51b815260040161070990614cac565b612bbf858285613082565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063095ea7b390612c0690899087906004016148f1565b602060405180830381600087803b158015612c2057600080fd5b505af1158015612c34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c589190613e6f565b506040517fb6b55f250000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063b6b55f2590612c9e908690600401614ddc565b600060405180830381600087803b158015612cb857600080fd5b505af1158015612ccc573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03891691506370a0823190612d18903090600401614791565b60206040518083038186803b158015612d3057600080fd5b505afa158015612d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d689190614531565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0388169063a9059cbb9061235390889085906004016148f1565b60005b82811015612e465733848483818110612dca57fe5b905060a002016060016020810190612de29190613b66565b6001600160a01b03161480612e22575030848483818110612dff57fe5b905060a002016060016020810190612e179190613b66565b6001600160a01b0316145b612e3e5760405162461bcd60e51b815260040161070990614cac565b600101612db5565b50612e4f611c00565b6001600160a01b0316630e8e3e848285856040518463ffffffff1660e01b8152600401612e7d9291906149b9565b6000604051808303818588803b158015612e9657600080fd5b505af1158015611187573d6000803e3d6000fd5b612eb382612f65565b15612ec457612ec182612fb0565b91505b6001600160a01b0384163014612f07576001600160a01b0384163314612efc5760405162461bcd60e51b815260040161070990614cac565b612f07848684613082565b6040517fba0876520000000000000000000000000000000000000000000000000000000081526000906001600160a01b0387169063ba0876529061123890869088903090600401614dfc565b6000612f5e82613217565b9392505050565b7fba100000000000000000000000000000000000000000000000000000000000007ffff00000000000000000000000000000000000000000000000000000000000008216145b919050565b6000806000612fbe84613217565b91509150612fcb8461322e565b15612f5e57600082559392505050565b612fea814710156101a3613275565b6000826001600160a01b031682604051613003906131e0565b60006040518083038185875af1925050503d8060008114613040576040519150601f19603f3d011682016040523d82523d6000602084013e613045565b606091505b50509050612122816101a4613275565b600061306083613287565b919091555050565b600080821361307a578160000361307c565b815b92915050565b8061308c57612122565b6040805160018082528183019092526060916020808301908036833701905050905082816000815181106130bc57fe5b6001600160a01b039290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050828160008151811061310757fe5b602002602001018181525050610bb58583836132e5565b606060006060846001600160a01b03168460405161313c9190614742565b6000604051808303816000865af19150503d8060008114613179576040519150601f19603f3d011682016040523d82523d6000602084013e61317e565b606091505b509150915061318d828261341f565b95945050505050565b60601c90565b606060008380156131a957fe5b14156131bf576131b882613449565b905061307c565b61307c610136613486565b60006131da838311156001613275565b50900390565b90565b6001600160a01b03161590565b606060008380156131fd57fe5b141561320c576131b8826134b3565b61307c610150613486565b60008061322383613287565b915081549050915091565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b816132835761328381613486565b5050565b60006001613294836134fc565b7f00000000000000000000000000000000000000000000000000000000000000006040516020016132c6929190614783565b60408051808303601f1901815291905280516020909101200392915050565b6060825167ffffffffffffffff811180156132ff57600080fd5b5060405190808252806020026020018201604052801561333957816020015b61332661374a565b81526020019060019003908161331e5790505b50905060005b83518110156133d1576040805160a08101909152806003815260200185838151811061336757fe5b60200260200101516001600160a01b0316815260200184838151811061338957fe5b60200260200101518152602001866001600160a01b03168152602001306001600160a01b03168152508282815181106133be57fe5b602090810291909101015260010161333f565b506133da611c00565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b81526004016134059190614a67565b600060405180830381600087803b158015612e9657600080fd5b6060821561342e57508061307c565b81511561343e5781518083602001fd5b61307c6101ae613486565b606060006134568361351f565b9050600181600381111561346657fe5b141561347d5761347583613535565b915050612fab565b82915050612fab565b6134b0817f42414c00000000000000000000000000000000000000000000000000000000006135e3565b50565b606060006134c08361351f565b905060008160038111156134d057fe5b14156134df5761347583613644565b60018160038111156134ed57fe5b141561347d57613475836136a7565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b60008180602001905181019061307c9190614258565b6060806000613543846136fa565b915091506000805b83518110156135a957600084828151811061356257fe5b6020026020010151905061357581612f65565b156135a05761358381612fb0565b85838151811061358f57fe5b602002602001018181525050600192505b5060010161354b565b50806135b5578461318d565b600183836040516020016135cb93929190614b71565b60405160208183030381529060405295945050505050565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60606000806136528461371d565b9150915061365f82612f65565b1561369d5761366d82612fb0565b91506000828260405160200161368593929190614b50565b60405160208183030381529060405292505050612fab565b8392505050612fab565b606060006136b483613734565b90506136bf81612f65565b1561347d576136cd81612fb0565b90506001816040516020016136e3929190614b39565b604051602081830303815290604052915050612fab565b606060008280602001905181019061371291906142d7565b909590945092505050565b6000808280602001905181019061371291906142a1565b600081806020019051810190612f5e9190614274565b6040805160a081019091528060008152600060208201819052604082018190526060820181905260809091015290565b803561307c81614eaf565b60008083601f840112613796578182fd5b50813567ffffffffffffffff8111156137ad578182fd5b60208301915083602080830285010111156137c757600080fd5b9250929050565b600082601f8301126137de578081fd5b81356137f16137ec82614e42565b614e1b565b81815291506020808301908481018184028601820187101561381257600080fd5b60005b8481101561383a57813561382881614eaf565b84529282019290820190600101613815565b505050505092915050565b600082601f830112613855578081fd5b81356138636137ec82614e42565b818152915060208083019084810160005b8481101561383a578135870160a080601f19838c0301121561389557600080fd5b61389e81614e1b565b85830135815260408084013587830152606080850135828401526080915081850135818401525082840135925067ffffffffffffffff8311156138e057600080fd5b6138ee8c8885870101613a10565b90820152865250509282019290820190600101613874565b60008083601f840112613917578182fd5b50813567ffffffffffffffff81111561392e578182fd5b6020830191508360206040830285010111156137c757600080fd5b600082601f830112613959578081fd5b81356139676137ec82614e42565b81815291506020808301908481018184028601820187101561398857600080fd5b60005b8481101561383a5781358452928201929082019060010161398b565b600082601f8301126139b7578081fd5b81516139c56137ec82614e42565b8181529150602080830190848101818402860182018710156139e657600080fd5b60005b8481101561383a578151845292820192908201906001016139e9565b803561307c81614ec4565b600082601f830112613a20578081fd5b813567ffffffffffffffff811115613a36578182fd5b613a496020601f19601f84011601614e1b565b9150808252836020828501011115613a6057600080fd5b8060208401602084013760009082016020015292915050565b80356001811061307c57600080fd5b80356002811061307c57600080fd5b600060808284031215613aa8578081fd5b613ab26080614e1b565b9050813567ffffffffffffffff80821115613acc57600080fd5b613ad8858386016137ce565b83526020840135915080821115613aee57600080fd5b613afa85838601613949565b60208401526040840135915080821115613b1357600080fd5b50613b2084828501613a10565b604083015250613b338360608401613a05565b606082015292915050565b600060808284031215613b4f578081fd5b50919050565b803560ff8116811461307c57600080fd5b600060208284031215613b77578081fd5b8135612f5e81614eaf565b600060208284031215613b93578081fd5b8151612f5e81614eaf565b60008060008060808587031215613bb3578283fd5b8435613bbe81614eaf565b93506020850135613bce81614eaf565b93969395505050506040820135916060013590565b60008060008060608587031215613bf8578182fd5b8435613c0381614eaf565b93506020850135613c1381614ec4565b9250604085013567ffffffffffffffff80821115613c2f578384fd5b818701915087601f830112613c42578384fd5b813581811115613c50578485fd5b886020828501011115613c61578485fd5b95989497505060200194505050565b600080600060608486031215613c84578081fd5b8335613c8f81614eaf565b95602085013595506040909401359392505050565b600080600060408486031215613cb8578081fd5b833567ffffffffffffffff811115613cce578182fd5b613cda86828701613785565b909790965060209590950135949350505050565b60008060208385031215613d00578182fd5b823567ffffffffffffffff811115613d16578283fd5b613d2285828601613785565b90969095509350505050565b60006020808385031215613d40578182fd5b825167ffffffffffffffff811115613d56578283fd5b8301601f81018513613d66578283fd5b8051613d746137ec82614e42565b8181528381019083850185840285018601891015613d90578687fd5b8694505b83851015613db2578051835260019490940193918501918501613d94565b50979650505050505050565b600080600060408486031215613dd2578081fd5b833567ffffffffffffffff80821115613de9578283fd5b818601915086601f830112613dfc578283fd5b813581811115613e0a578384fd5b87602060a083028501011115613e1e578384fd5b6020928301989097509590910135949350505050565b600060208284031215613e45578081fd5b815167ffffffffffffffff811115613e5b578182fd5b613e67848285016139a7565b949350505050565b600060208284031215613e80578081fd5b8151612f5e81614ec4565b60008060008060008060c08789031215613ea3578384fd5b8635613eae81614ec4565b95506020870135613ebe81614eaf565b945060408701359350613ed48860608901613b55565b92506080870135915060a087013590509295509295509295565b600080600080600080600060c0888a031215613f08578485fd5b87359650613f198960208a01613a79565b95506040880135613f2981614eaf565b94506060880135613f3981614eaf565b9350608088013567ffffffffffffffff80821115613f55578283fd5b613f618b838c01613a97565b945060a08a0135915080821115613f76578283fd5b50613f838a828b01613906565b989b979a50959850939692959293505050565b600080600080600080600060e0888a031215613fb0578081fd5b87359650613fc18960208a01613a79565b95506040880135613fd181614eaf565b94506060880135613fe181614eaf565b9350608088013567ffffffffffffffff811115613ffc578182fd5b6140088a828b01613a97565b93505060a0880135915060c0880135905092959891949750929550565b600080600080600080600080610100898b031215614041578182fd5b883561404c81614eaf565b9750602089013561405c81614eaf565b96506040890135955060608901359450608089013561407a81614ec4565b93506140898a60a08b01613b55565b925060c0890135915060e089013590509295985092959890939650565b600080600080600080600060e0888a0312156140c0578081fd5b87356140cb81614eaf565b965060208801356140db81614eaf565b955060408801359450606088013593506140f88960808a01613b55565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215614126578182fd5b823561413181614eaf565b946020939093013593505050565b600080600080600060a08688031215614156578283fd5b853561416181614eaf565b9450602086013561417181614eaf565b9350604086013561418181614eaf565b94979396509394606081013594506080013592915050565b600080600080608085870312156141ae578182fd5b84356141b981614eaf565b935060208501356141c981614eaf565b925060408501356141d981614eaf565b9396929550929360600135925050565b60008060008060008060c08789031215614201578384fd5b863561420c81614eaf565b9550602087013561421c81614eaf565b9450604087013561422c81614eaf565b935060608701359250608087013561424381614ec4565b8092505060a087013590509295509295509295565b600060208284031215614269578081fd5b8151612f5e81614ed2565b60008060408385031215614286578182fd5b825161429181614ed2565b6020939093015192949293505050565b6000806000606084860312156142b5578081fd5b83516142c081614ed2565b602085015160409095015190969495509392505050565b6000806000606084860312156142eb578081fd5b83516142f681614ed2565b602085015190935067ffffffffffffffff811115614312578182fd5b61431e868287016139a7565b925050604084015190509250925092565b60008060008060008060008060008060006101608c8e031215614350578485fd5b61435a8d8d613a88565b9a5067ffffffffffffffff8060208e01351115614375578586fd5b6143858e60208f01358f01613845565b9a508060408e01351115614397578586fd5b6143a78e60408f01358f01613785565b909a5098506143b98e60608f01613b3e565b97508060e08e013511156143cb578586fd5b6143db8e60e08f01358f01613785565b90975095506101008d013594506101208d013593506101408d0135811015614401578283fd5b506144138d6101408e01358e01613906565b81935080925050509295989b509295989b9093969950565b6000806000806000806101208789031215614444578384fd5b863567ffffffffffffffff8082111561445b578586fd5b9088019060c0828b03121561446e578586fd5b61447860c0614e1b565b823581526144898b60208501613a88565b6020820152604083013561449c81614eaf565b60408201526144ae8b6060850161377a565b60608201526080830135608082015260a0830135828111156144ce578788fd5b6144da8c828601613a10565b60a0830152508098505050506144f38860208901613b3e565b959895975050505060a08401359360c08101359360e08201359350610100909101359150565b60006020828403121561452a578081fd5b5035919050565b600060208284031215614542578081fd5b5051919050565b6000806040838503121561455b578182fd5b505080516020909101519092909150565b6001600160a01b03169052565b60008284526020808501945082825b858110156145b657813561459b81614eaf565b6001600160a01b031687529582019590820190600101614588565b509495945050505050565b60008284526020808501945082825b858110156145b6578135875295820195908201906001016145d0565b6000815180845260208085019450808401835b838110156145b6578151875295820195908201906001016145ff565b15159052565b60008151808452614639816020860160208601614e6f565b601f01601f19169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b818110156146925783516001600160a01b03168352928401929184019160010161466d565b5050828501519150858103838701526146ab81836145ec565b92505050604083015184820360408601526146c68282614621565b91505060608301516146db606086018261461b565b509392505050565b80356146ee81614eaf565b6001600160a01b03908116835260208201359061470a82614ec4565b901515602084015260408201359061472182614eaf565b166040830152606081013561473581614ec4565b8015156060840152505050565b60008251614754818460208701614e6f565b9190910192915050565b60008451614770818460208901614e6f565b8201838582379092019182525092915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6000604082016001600160a01b03808616845260206040818601528286518085526060870191508288019450855b818110156148155785518516835294830194918301916001016147f7565b509098975050505050505050565b6001600160a01b039889168152969097166020870152604086019490945260608501929092521515608084015260ff1660a083015260c082015260e08101919091526101000190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0397881681529515156020870152939095166040850152606084019190915260ff16608083015260a082019290925260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b6001600160a01b03949094168452602084019290925261ffff1660408301521515606082015260800190565b6040808252810183905260008460608301825b8681101561499c576020833561498181614eaf565b6001600160a01b03168352928301929091019060010161496c565b5080925050506001600160a01b0383166020830152949350505050565b6020808252818101839052600090604080840186845b87811015614a5a5781356149e281614ed2565b6149eb81614e9b565b8352818501356149fa81614eaf565b6001600160a01b03168386015281840135848401526060614a1d81840184614e62565b614a298286018261456c565b50506080614a3981840184614e62565b614a458286018261456c565b505060a09283019291909101906001016149cf565b5090979650505050505050565b602080825282518282018190526000919060409081850190868401855b82811015614af05781518051614a9981614e9b565b8552808701516001600160a01b0316878601528581015186860152606080820151614ac68288018261456c565b505060809081015190614adb8682018361456c565b505060a0939093019290850190600101614a84565b5091979650505050505050565b60008582526001600160a01b03808616602084015280851660408401525060806060830152614b2f608083018461464d565b9695505050505050565b60408101614b4684614e9b565b9281526020015290565b60608101614b5d85614e9b565b938152602081019290925260409091015290565b6000614b7c85614e9b565b84825260606020830152614b9360608301856145ec565b9050826040830152949350505050565b6000610120808301614bb48c614ea5565b8b84526020808501929092528a5190819052610140808501928281028601909101918c8201855b82811015614c5b578785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00186528151805186528481015185870152604080820151908701526060808201519087015260809081015160a091870182905290614c4781880183614621565b978601979650505090830190600101614bdb565b505050508381036040850152614c72818a8c614579565b915050614c8260608401886146e3565b82810360e0840152614c958186886145c1565b915050826101008301529998505050505050505050565b60208082526010908201527f496e636f72726563742073656e64657200000000000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b60208082526019908201527f696e76616c696420636861696e6564207265666572656e636500000000000000604082015260600190565b600060e08252855160e08301526020860151614d6c81614ea5565b61010083015260408601516001600160a01b03908116610120840152606087015116610140830152608086015161016083015260a086015160c0610180840152614dba6101a0840182614621565b915050614dca60208301866146e3565b60a082019390935260c0015292915050565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526001600160a01b03918216602084015216604082015260600190565b60405181810167ffffffffffffffff81118282101715614e3a57600080fd5b604052919050565b600067ffffffffffffffff821115614e58578081fd5b5060209081020190565b60008235612f5e81614eaf565b60005b83811015614e8a578181015183820152602001614e72565b838111156104c65750506000910152565b600481106134b057fe5b600281106134b057fe5b6001600160a01b03811681146134b057600080fd5b80151581146134b057600080fd5b600481106134b057600080fdfea264697066735822122050b32f1916dd2bfb3a1d0a43f7959f7e0894f8a708f95ba38dda2a8251d8bb9564736f6c6343000701003360c060405234801561001057600080fd5b5060405161078738038061078783398101604081905261002f91610052565b60016000556001600160601b0319606092831b8116608052911b1660a0526100a3565b60008060408385031215610064578182fd5b825161006f8161008b565b60208401519092506100808161008b565b809150509250929050565b6001600160a01b03811681146100a057600080fd5b50565b60805160601c60a05160601c6106b36100d46000398060fc528061020f5250806058528061012052506106b36000f3fe6080604052600436106100385760003560e01c80637678922e146100885780638d928af8146100b3578063ac9650d8146100c857610083565b36610083576100813373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102066100e8565b005b600080fd5b34801561009457600080fd5b5061009d6100fa565b6040516100aa919061050e565b60405180910390f35b3480156100bf57600080fd5b5061009d61011e565b6100db6100d6366004610480565b610142565b6040516100aa919061052f565b816100f6576100f68161026e565b5050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061014c61029b565b8167ffffffffffffffff8111801561016357600080fd5b5060405190808252806020026020018201604052801561019757816020015b60608152602001906001900390816101825790505b50905060005b82811015610257576102388484838181106101b457fe5b90506020028101906101c691906105e3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016929150506102b4565b82828151811061024457fe5b602090810291909101015260010161019d565b50610260610337565b610268610348565b92915050565b610298817f42414c000000000000000000000000000000000000000000000000000000000061034f565b50565b6102ad600260005414156101906100e8565b6002600055565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516102df91906104ef565b600060405180830381855af49150503d806000811461031a576040519150601f19603f3d011682016040523d82523d6000602084013e61031f565b606091505b509150915061032e82826103ca565b95945050505050565b4780156102985761029833826103f4565b6001600055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156103d9575080610268565b8151156103e95781518083602001fd5b6102686101ae61026e565b610403814710156101a36100e8565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516104299061050b565b60006040518083038185875af1925050503d8060008114610466576040519150601f19603f3d011682016040523d82523d6000602084013e61046b565b606091505b5050905061047b816101a46100e8565b505050565b60008060208385031215610492578182fd5b823567ffffffffffffffff808211156104a9578384fd5b818501915085601f8301126104bc578384fd5b8135818111156104ca578485fd5b86602080830285010111156104dd578485fd5b60209290920196919550909350505050565b6000825161050181846020870161064d565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156105d6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610599818989018a850161064d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01695909501860194509285019290850190600101610554565b5092979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610617578283fd5b83018035915067ffffffffffffffff821115610631578283fd5b60200191503681900382131561064657600080fd5b9250929050565b60005b83811015610668578181015183820152602001610650565b83811115610677576000848401525b5050505056fea2646970667358221220063fdaaad6c7f32fb6dd53f100269a9ea16c7241c4a9587b1f83f82a35b5424264736f6c63430007010033" +} \ No newline at end of file diff --git a/pkg/deployments/tasks/20220720-batch-relayer-v3/index.ts b/pkg/deployments/tasks/20220916-batch-relayer-v4/index.ts similarity index 100% rename from pkg/deployments/tasks/20220720-batch-relayer-v3/index.ts rename to pkg/deployments/tasks/20220916-batch-relayer-v4/index.ts diff --git a/pkg/deployments/tasks/20220916-batch-relayer-v4/input.ts b/pkg/deployments/tasks/20220916-batch-relayer-v4/input.ts new file mode 100644 index 0000000000..f880b907ff --- /dev/null +++ b/pkg/deployments/tasks/20220916-batch-relayer-v4/input.ts @@ -0,0 +1,35 @@ +import Task, { TaskMode } from '../../src/task'; + +export type BatchRelayerDeployment = { + Vault: string; + wstETH: string; + BalancerMinter: string; +}; + +const Vault = new Task('20210418-vault', TaskMode.READ_ONLY); +const BalancerMinter = new Task('20220325-gauge-controller', TaskMode.READ_ONLY); + +export default { + Vault, + // wstETH and BalancerMinter are only deployed on mainnet, and goerli. + mainnet: { + wstETH: '0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0', + BalancerMinter, + }, + goerli: { + wstETH: '0x6320cD32aA674d2898A68ec82e869385Fc5f7E2f', + BalancerMinter, + }, + polygon: { + wstETH: '0x0000000000000000000000000000000000000000', + BalancerMinter: '0x0000000000000000000000000000000000000000', + }, + arbitrum: { + wstETH: '0x0000000000000000000000000000000000000000', + BalancerMinter: '0x0000000000000000000000000000000000000000', + }, + optimism: { + wstETH: '0x0000000000000000000000000000000000000000', + BalancerMinter: '0x0000000000000000000000000000000000000000', + }, +}; diff --git a/pkg/deployments/tasks/20220916-batch-relayer-v4/readme.md b/pkg/deployments/tasks/20220916-batch-relayer-v4/readme.md new file mode 100644 index 0000000000..5a11e8714e --- /dev/null +++ b/pkg/deployments/tasks/20220916-batch-relayer-v4/readme.md @@ -0,0 +1,10 @@ +# 2022-09-16 - Batch Relayer V4 + +Deployment of the fourth `BalancerRelayer` using `BatchRelayerLibrary`, for combining multiple operations (swaps, joins, etc.) in a single transaction. + +This new version provides quality of life improvements, like read-only chained references and ways to read them. + +## Useful Files + +- [`BalancerRelayer` ABI](./abi/BalancerRelayer.json) +- [`BatchRelayerLibrary` ABI](./abi/BatchRelayerLibrary.json) diff --git a/pkg/deployments/tasks/20220720-batch-relayer-v3/test/test.fork.ts b/pkg/deployments/tasks/20220916-batch-relayer-v4/test/test.fork.ts similarity index 98% rename from pkg/deployments/tasks/20220720-batch-relayer-v3/test/test.fork.ts rename to pkg/deployments/tasks/20220916-batch-relayer-v4/test/test.fork.ts index 6e402ef7c1..80f012904a 100644 --- a/pkg/deployments/tasks/20220720-batch-relayer-v3/test/test.fork.ts +++ b/pkg/deployments/tasks/20220916-batch-relayer-v4/test/test.fork.ts @@ -14,7 +14,7 @@ import { WeightedPoolEncoder } from '@balancer-labs/balancer-js'; import { MAX_UINT256 } from '@balancer-labs/v2-helpers/src/constants'; import { defaultAbiCoder } from '@ethersproject/abi/lib/abi-coder'; -describeForkTest('BatchRelayerLibrary', 'mainnet', 15150000, function () { +describeForkTest('BatchRelayerLibrary', 'mainnet', 15485000, function () { let task: Task; let relayer: Contract, library: Contract; @@ -40,7 +40,7 @@ describeForkTest('BatchRelayerLibrary', 'mainnet', 15150000, function () { } before('run task', async () => { - task = new Task('20220720-batch-relayer-v3', TaskMode.TEST, getForkedNetwork(hre)); + task = new Task('20220916-batch-relayer-v4', TaskMode.TEST, getForkedNetwork(hre)); await task.run({ force: true }); library = await task.deployedInstance('BatchRelayerLibrary'); relayer = await task.instanceAt('BalancerRelayer', await library.getEntrypoint()); diff --git a/pkg/deployments/tasks/20220720-batch-relayer-v3/abi/BatchRelayerLibrary.json b/pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/abi/BatchRelayerLibrary.json similarity index 100% rename from pkg/deployments/tasks/20220720-batch-relayer-v3/abi/BatchRelayerLibrary.json rename to pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/abi/BatchRelayerLibrary.json diff --git a/pkg/deployments/tasks/20220720-batch-relayer-v3/build-info/BatchRelayerLibrary.json b/pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/build-info/BatchRelayerLibrary.json similarity index 100% rename from pkg/deployments/tasks/20220720-batch-relayer-v3/build-info/BatchRelayerLibrary.json rename to pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/build-info/BatchRelayerLibrary.json diff --git a/pkg/deployments/tasks/20220720-batch-relayer-v3/bytecode/BatchRelayerLibrary.json b/pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/bytecode/BatchRelayerLibrary.json similarity index 100% rename from pkg/deployments/tasks/20220720-batch-relayer-v3/bytecode/BatchRelayerLibrary.json rename to pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/bytecode/BatchRelayerLibrary.json diff --git a/pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/index.ts b/pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/index.ts new file mode 100644 index 0000000000..1e22142eb3 --- /dev/null +++ b/pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/index.ts @@ -0,0 +1,17 @@ +import Task from '../../../src/task'; +import { TaskRunOptions } from '../../../src/types'; +import { BatchRelayerDeployment } from './input'; + +export default async (task: Task, { force, from }: TaskRunOptions = {}): Promise => { + const input = task.input() as BatchRelayerDeployment; + + const relayerLibraryArgs = [input.Vault, input.wstETH, input.BalancerMinter]; + const relayerLibrary = await task.deployAndVerify('BatchRelayerLibrary', relayerLibraryArgs, from, force); + + // The relayer library automatically also deploys the relayer itself: we must verify it + const relayer: string = await relayerLibrary.getEntrypoint(); + + const relayerArgs = [input.Vault, relayerLibrary.address]; // See BalancerRelayer's constructor + await task.verify('BalancerRelayer', relayer, relayerArgs); + await task.save({ BalancerRelayer: relayer }); +}; diff --git a/pkg/deployments/tasks/20220720-batch-relayer-v3/input.ts b/pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/input.ts similarity index 95% rename from pkg/deployments/tasks/20220720-batch-relayer-v3/input.ts rename to pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/input.ts index 22c2abffb1..f39573d245 100644 --- a/pkg/deployments/tasks/20220720-batch-relayer-v3/input.ts +++ b/pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/input.ts @@ -1,4 +1,4 @@ -import Task, { TaskMode } from '../../src/task'; +import Task, { TaskMode } from '../../../src/task'; export type BatchRelayerDeployment = { Vault: string; diff --git a/pkg/deployments/tasks/20220720-batch-relayer-v3/output/arbitrum.json b/pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/output/arbitrum.json similarity index 100% rename from pkg/deployments/tasks/20220720-batch-relayer-v3/output/arbitrum.json rename to pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/output/arbitrum.json diff --git a/pkg/deployments/tasks/20220720-batch-relayer-v3/output/goerli.json b/pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/output/goerli.json similarity index 100% rename from pkg/deployments/tasks/20220720-batch-relayer-v3/output/goerli.json rename to pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/output/goerli.json diff --git a/pkg/deployments/tasks/20220720-batch-relayer-v3/output/mainnet.json b/pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/output/mainnet.json similarity index 100% rename from pkg/deployments/tasks/20220720-batch-relayer-v3/output/mainnet.json rename to pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/output/mainnet.json diff --git a/pkg/deployments/tasks/20220720-batch-relayer-v3/output/optimism.json b/pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/output/optimism.json similarity index 100% rename from pkg/deployments/tasks/20220720-batch-relayer-v3/output/optimism.json rename to pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/output/optimism.json diff --git a/pkg/deployments/tasks/20220720-batch-relayer-v3/output/polygon.json b/pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/output/polygon.json similarity index 100% rename from pkg/deployments/tasks/20220720-batch-relayer-v3/output/polygon.json rename to pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/output/polygon.json diff --git a/pkg/deployments/tasks/20220720-batch-relayer-v3/readme.md b/pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/readme.md similarity index 73% rename from pkg/deployments/tasks/20220720-batch-relayer-v3/readme.md rename to pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/readme.md index 9900c0e571..edbb8b923f 100644 --- a/pkg/deployments/tasks/20220720-batch-relayer-v3/readme.md +++ b/pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/readme.md @@ -1,5 +1,9 @@ # 2022-07-20 - Batch Relayer V3 +> ⚠️ **DEPRECATED: do not use** ⚠️ +> +> This relayer has been deprecated in favor of an [updated version](../../20220916-batch-relayer-v4) with new features, such as read-only references and a 'peek' reference public method. + Deployment of the second `BalancerRelayer` using `BatchRelayerLibrary`, for combining multiple operations (swaps, joins, etc.) in a single transaction. This new version adds support for Liquidity Gauge interactions, including staking, unstaking, minting, etc. diff --git a/pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/test/test.fork.ts b/pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/test/test.fork.ts new file mode 100644 index 0000000000..8e41bcd127 --- /dev/null +++ b/pkg/deployments/tasks/deprecated/20220720-batch-relayer-v3/test/test.fork.ts @@ -0,0 +1,153 @@ +import hre from 'hardhat'; +import { expect } from 'chai'; +import { BigNumber, Contract } from 'ethers'; + +import { BigNumberish, fp } from '@balancer-labs/v2-helpers/src/numbers'; + +import { describeForkTest } from '../../../../src/forkTests'; +import Task, { TaskMode } from '../../../../src/task'; +import { getForkedNetwork } from '../../../../src/test'; +import { impersonate } from '../../../../src/signers'; +import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers'; +import { WeightedPoolEncoder } from '@balancer-labs/balancer-js'; + +import { MAX_UINT256 } from '@balancer-labs/v2-helpers/src/constants'; +import { defaultAbiCoder } from '@ethersproject/abi/lib/abi-coder'; + +describeForkTest('BatchRelayerLibrary', 'mainnet', 15150000, function () { + let task: Task; + + let relayer: Contract, library: Contract; + let sender: SignerWithAddress; + let vault: Contract, authorizer: Contract; + + const WETH = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'; + + const ETH_STETH_POOL = '0x32296969ef14eb0c6d29669c550d4a0449130230000200000000000000000080'; + const ETH_STETH_GAUGE = '0xcD4722B7c24C29e0413BDCd9e51404B4539D14aE'; + + const ETH_DAI_POOL = '0x0b09dea16768f0799065c475be02919503cb2a3500020000000000000000001a'; + const ETH_DAI_GAUGE = '0x4ca6AC0509E6381Ca7CD872a6cdC0Fbf00600Fa1'; + + const STAKED_ETH_STETH_HOLDER = '0x4B581dedA2f2C0650C3dFC506C86a8C140d9f699'; + + const CHAINED_REFERENCE_PREFIX = 'ba10'; + function toChainedReference(key: BigNumberish): BigNumber { + // The full padded prefix is 66 characters long, with 64 hex characters and the 0x prefix. + const paddedPrefix = `0x${CHAINED_REFERENCE_PREFIX}${'0'.repeat(64 - CHAINED_REFERENCE_PREFIX.length)}`; + + return BigNumber.from(paddedPrefix).add(key); + } + + before('run task', async () => { + task = new Task('20220720-batch-relayer-v3', TaskMode.TEST, getForkedNetwork(hre)); + await task.run({ force: true }); + library = await task.deployedInstance('BatchRelayerLibrary'); + relayer = await task.instanceAt('BalancerRelayer', await library.getEntrypoint()); + }); + + before('load vault and tokens', async () => { + const vaultTask = new Task('20210418-vault', TaskMode.READ_ONLY, getForkedNetwork(hre)); + + vault = await vaultTask.instanceAt('Vault', await library.getVault()); + authorizer = await vaultTask.instanceAt('Authorizer', await vault.getAuthorizer()); + }); + + before('load signers', async () => { + // We impersonate an account that holds staked BPT for the ETH_STETH Pool. + sender = await impersonate(STAKED_ETH_STETH_HOLDER, fp(100)); + }); + + before('approve relayer at the authorizer', async () => { + const relayerActionIds = await Promise.all( + ['swap', 'batchSwap', 'joinPool', 'exitPool', 'setRelayerApproval', 'manageUserBalance'].map((action) => + vault.getActionId(vault.interface.getSighash(action)) + ) + ); + + // We impersonate an account with the default admin role in order to be able to approve the relayer. This assumes + // such an account exists. + const admin = await impersonate(await authorizer.getRoleMember(await authorizer.DEFAULT_ADMIN_ROLE(), 0), fp(100)); + + // Grant relayer permission to call all relayer functions + await authorizer.connect(admin).grantRoles(relayerActionIds, relayer.address); + }); + + before('approve relayer by the user', async () => { + await vault.connect(sender).setRelayerApproval(sender.address, relayer.address, true); + }); + + it('sender can unstake, exit, join and stake', async () => { + const destinationGauge = await task.instanceAt('IERC20', ETH_DAI_GAUGE); + expect(await destinationGauge.balanceOf(sender.address)).to.be.equal(0); + + // We use the relayer as the intermediate token holder as that saves gas (since there's fewer transfers, relayer + // permission checks, etc.) and also sidesteps the issue that not all BPT has Vault allowance (which is required to + // transfer them via the Vault, e.g. for staking). + + const stakedBalance = await (await task.instanceAt('IERC20', ETH_STETH_GAUGE)).balanceOf(sender.address); + + // There's no chained output here as the input equals the output + const unstakeCalldata = library.interface.encodeFunctionData('gaugeWithdraw', [ + ETH_STETH_GAUGE, + sender.address, + relayer.address, + stakedBalance, + ]); + + // Exit into WETH (it'd be more expensive to use ETH, and we'd have to use the relayer as an intermediary as we'd + // need to use said ETH). + + const ethStethTokens: Array = (await vault.getPoolTokens(ETH_STETH_POOL)).tokens; + const stableWethIndex = ethStethTokens.findIndex((token) => token.toLowerCase() == WETH.toLowerCase()); + + const exitCalldata = library.interface.encodeFunctionData('exitPool', [ + ETH_STETH_POOL, + 0, // Even if this a Stable Pool, the Batch Relayer is unaware of their encodings and the Weighted Pool encoding + // happens to match here + relayer.address, + relayer.address, + { + assets: ethStethTokens, + minAmountsOut: ethStethTokens.map(() => 0), + // Note that we use the same input as before + userData: defaultAbiCoder.encode(['uint256', 'uint256', 'uint256'], [0, stakedBalance, stableWethIndex]), + toInternalBalance: true, + }, + // Only store a chained reference for the WETH amount out, as the rest will be zero + [{ key: toChainedReference(42), index: stableWethIndex }], + ]); + + // Join from WETH + const ethDaiTokens: Array = (await vault.getPoolTokens(ETH_DAI_POOL)).tokens; + const ethDaiAmountsIn = ethDaiTokens.map((token) => + token.toLowerCase() == WETH.toLowerCase() ? toChainedReference(42) : 0 + ); + + const joinCalldata = library.interface.encodeFunctionData('joinPool', [ + ETH_DAI_POOL, + 0, // Weighted Pool + relayer.address, + relayer.address, + { + assets: ethDaiTokens, + maxAmountsIn: ethDaiTokens.map(() => MAX_UINT256), + userData: WeightedPoolEncoder.joinExactTokensInForBPTOut(ethDaiAmountsIn, 0), + fromInternalBalance: true, // Since we're joining from internal balance, we don't need to grant token allowance + }, + 0, // No eth + toChainedReference(17), // Store a reference for later staking + ]); + + const stakeCalldata = library.interface.encodeFunctionData('gaugeDeposit', [ + ETH_DAI_GAUGE, + relayer.address, + sender.address, + toChainedReference(17), // Stake all BPT from the join + ]); + + await relayer.connect(sender).multicall([unstakeCalldata, exitCalldata, joinCalldata, stakeCalldata]); + + expect(await destinationGauge.balanceOf(sender.address)).to.be.gt(0); + }); +});