Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 25 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit Single | 17689984 | 17 days ago | IN | 0 ETH | 0.0000906 | ||||
Deposit Single | 17689966 | 17 days ago | IN | 0 ETH | 0.0001009 | ||||
Deposit Single | 12561199 | 201 days ago | IN | 0 ETH | 0.00008767 | ||||
Deposit Single | 12476235 | 204 days ago | IN | 0 ETH | 0.00011544 | ||||
Deposit Single | 12448148 | 205 days ago | IN | 0 ETH | 0.00014825 | ||||
Deposit Single | 12364847 | 208 days ago | IN | 0 ETH | 0.00007547 | ||||
Deposit Single | 12275593 | 211 days ago | IN | 0 ETH | 0.00022866 | ||||
Deposit Single | 12241114 | 213 days ago | IN | 0 ETH | 0.00029035 | ||||
Deposit Single | 10845283 | 262 days ago | IN | 0 ETH | 0.00231205 | ||||
Deposit Single | 10790075 | 264 days ago | IN | 0 ETH | 0.00336865 | ||||
Deposit Single | 10682727 | 267 days ago | IN | 0 ETH | 0.00504818 | ||||
Deposit Single | 9917300 | 294 days ago | IN | 0 ETH | 0.00318258 | ||||
Deposit Single | 9823368 | 298 days ago | IN | 0 ETH | 0.0037742 | ||||
Deposit Single | 9272488 | 323 days ago | IN | 0 ETH | 0.00287273 | ||||
Deposit Single | 8749240 | 346 days ago | IN | 0 ETH | 0.00137947 | ||||
Deposit Single | 8724411 | 347 days ago | IN | 0 ETH | 0.00178614 | ||||
Deposit Single | 8702479 | 348 days ago | IN | 0 ETH | 0.00194141 | ||||
Deposit Single | 8679020 | 349 days ago | IN | 0 ETH | 0.00353379 | ||||
Deposit Single | 8677924 | 349 days ago | IN | 0 ETH | 0.0049861 | ||||
Deposit Single | 8574975 | 357 days ago | IN | 0 ETH | 0.00257901 | ||||
Deposit Single | 8574953 | 357 days ago | IN | 0 ETH | 0.0022852 | ||||
Deposit Single | 8574832 | 357 days ago | IN | 0 ETH | 0.00231377 | ||||
Deposit Single | 8574824 | 357 days ago | IN | 0 ETH | 0.00230896 | ||||
Deposit Single | 8574816 | 357 days ago | IN | 0 ETH | 0.00257259 | ||||
Deposit Single | 8574632 | 357 days ago | IN | 0 ETH | 0.00220127 |
Loading...
Loading
Contract Name:
RewardPoolDepositWrapper
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at zkevm.polygonscan.com on 2023-11-23 */ // Sources flattened with hardhat v2.14.0 https://hardhat.org // File @openzeppelin/contracts-0.8/token/ERC20/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol) // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev 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. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev 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. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev 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. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File @openzeppelin/contracts-0.8/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Address.sol) pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File @openzeppelin/contracts-0.8/token/ERC20/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.0; /** * @title SafeERC20 * @dev 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. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File contracts/interfaces/balancer/IBalancerCore.sol pragma solidity 0.8.11; interface IPriceOracle { struct OracleAverageQuery { Variable variable; uint256 secs; uint256 ago; } enum Variable { PAIR_PRICE, BPT_PRICE, INVARIANT } function getTimeWeightedAverage(OracleAverageQuery[] memory queries) external view returns (uint256[] memory results); } interface IBalancerVault { enum PoolSpecialization { GENERAL, MINIMAL_SWAP_INFO, TWO_TOKEN } enum JoinKind { INIT, EXACT_TOKENS_IN_FOR_BPT_OUT, TOKEN_IN_FOR_EXACT_BPT_OUT, ALL_TOKENS_IN_FOR_EXACT_BPT_OUT } enum SwapKind { GIVEN_IN, GIVEN_OUT } struct BatchSwapStep { bytes32 poolId; uint256 assetInIndex; uint256 assetOutIndex; uint256 amount; bytes userData; } function batchSwap( SwapKind kind, BatchSwapStep[] memory swaps, IAsset[] memory assets, FundManagement memory funds, int256[] memory limits, uint256 deadline ) external payable returns (int256[] memory); struct SingleSwap { bytes32 poolId; SwapKind kind; IAsset assetIn; IAsset assetOut; uint256 amount; bytes userData; } struct FundManagement { address sender; bool fromInternalBalance; address payable recipient; bool toInternalBalance; } struct JoinPoolRequest { IAsset[] assets; uint256[] maxAmountsIn; bytes userData; bool fromInternalBalance; } function getPool(bytes32 poolId) external view returns (address, PoolSpecialization); function getPoolTokens(bytes32 poolId) external view returns ( address[] memory tokens, uint256[] memory balances, uint256 lastChangeBlock ); function joinPool( bytes32 poolId, address sender, address recipient, JoinPoolRequest memory request ) external payable; function swap( SingleSwap memory singleSwap, FundManagement memory funds, uint256 limit, uint256 deadline ) external returns (uint256 amountCalculated); function exitPool( bytes32 poolId, address sender, address payable recipient, ExitPoolRequest memory request ) external; function getInternalBalance(address user, address[] memory tokens) external view returns (uint256[] memory); function queryBatchSwap( SwapKind kind, BatchSwapStep[] memory swaps, IAsset[] memory assets, FundManagement memory funds ) external returns (int256[] memory assetDeltas); struct ExitPoolRequest { IAsset[] assets; uint256[] minAmountsOut; bytes userData; bool toInternalBalance; } enum ExitKind { EXACT_BPT_IN_FOR_ONE_TOKEN_OUT, EXACT_BPT_IN_FOR_TOKENS_OUT, BPT_IN_FOR_EXACT_TOKENS_OUT, MANAGEMENT_FEE_TOKENS_OUT // for ManagedPool } } interface IAsset { // solhint-disable-previous-line no-empty-blocks } interface IBalancerPool { function getPoolId() external view returns (bytes32); function getNormalizedWeights() external view returns (uint256[] memory); function getSwapEnabled() external view returns (bool); function getOwner() external view returns (address); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); } interface ILBPFactory { function create( string memory name, string memory symbol, IERC20[] memory tokens, uint256[] memory weights, uint256 swapFeePercentage, address owner, bool swapEnabledOnStart ) external returns (address); } interface ILBP { function setSwapEnabled(bool swapEnabled) external; function updateWeightsGradually( uint256 startTime, uint256 endTime, uint256[] memory endWeights ) external; function getGradualWeightUpdateParams() external view returns ( uint256 startTime, uint256 endTime, uint256[] memory endWeights ); } interface IStablePoolFactory { function create( string memory name, string memory symbol, IERC20[] memory tokens, uint256 amplificationParameter, uint256 swapFeePercentage, address owner ) external returns (address); } interface IWeightedPool2TokensFactory { function create( string memory name, string memory symbol, IERC20[] memory tokens, uint256[] memory weights, uint256 swapFeePercentage, bool oracleEnabled, address owner ) external returns (address); } interface IRateProvider { function getRate() external view returns (uint256); } interface IWeightedPoolFactory { /** * @dev Deploys a new `WeightedPool`. */ function create( string memory name, string memory symbol, IERC20[] memory tokens, uint256[] memory normalizedWeights, IRateProvider[] memory rateProviders, uint256 swapFeePercentage, address owner ) external returns (address); } interface IWeightedPoolFactoryV2 { /** * @dev Deploys a new `WeightedPool`. */ function create( string memory name, string memory symbol, IERC20[] memory tokens, uint256[] memory normalizedWeights, uint256 swapFeePercentage, address owner ) external returns (address); } // File contracts/interfaces/IRewardPool4626.sol pragma solidity 0.8.11; interface IRewardPool4626 { function withdraw( uint256 assets, address receiver, address owner ) external returns (uint256 shares); function deposit(uint256 assets, address receiver) external returns (uint256 shares); function asset() external view returns (address); function balanceOf(address account) external view returns (uint256); function processIdleRewards() external; } // File contracts/peripheral/RewardPoolDepositWrapper.sol pragma solidity 0.8.11; /** * @title RewardPoolDepositWrapper * @notice Peripheral contract that allows users to deposit into a Balancer pool and then stake their BPT * into Aura in 1 tx. Flow: * - rawToken.transferFrom(user, address(this)) * - vault.deposit(rawToken), receive poolToken * - poolToken.approve(rewardPool) * - rewardPool.deposit(poolToken), converts to auraBPT and then deposits */ contract RewardPoolDepositWrapper { using SafeERC20 for IERC20; IBalancerVault public immutable bVault; constructor(address _bVault) { bVault = IBalancerVault(_bVault); } /** * @dev Deposits a single raw token into a BPT before depositing in reward pool. * Requires sender to approve this contract before calling. */ function depositSingle( address _rewardPoolAddress, IERC20 _inputToken, uint256 _inputAmount, bytes32 _balancerPoolId, IBalancerVault.JoinPoolRequest memory _request ) external { // 1. Transfer input token _inputToken.safeTransferFrom(msg.sender, address(this), _inputAmount); // 2. Deposit to balancer pool (address pool, ) = bVault.getPool(_balancerPoolId); _inputToken.approve(address(bVault), _inputAmount); bVault.joinPool(_balancerPoolId, address(this), address(this), _request); uint256 minted = IERC20(pool).balanceOf(address(this)); require(minted > 0, "!mint"); uint256 inputBalAfter = _inputToken.balanceOf(address(this)); if (inputBalAfter != 0) { // Refund any amount left in the contract _inputToken.transfer(msg.sender, inputBalAfter); } // 3. Deposit to reward pool IERC20(pool).approve(_rewardPoolAddress, minted); IRewardPool4626(_rewardPoolAddress).deposit(minted, msg.sender); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_bVault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"bVault","outputs":[{"internalType":"contract IBalancerVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_rewardPoolAddress","type":"address"},{"internalType":"contract IERC20","name":"_inputToken","type":"address"},{"internalType":"uint256","name":"_inputAmount","type":"uint256"},{"internalType":"bytes32","name":"_balancerPoolId","type":"bytes32"},{"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 IBalancerVault.JoinPoolRequest","name":"_request","type":"tuple"}],"name":"depositSingle","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a06040523480156200001157600080fd5b50604051620017a8380380620017a88339818101604052810190620000379190620000dc565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050506200010e565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000a48262000077565b9050919050565b620000b68162000097565b8114620000c257600080fd5b50565b600081519050620000d681620000ab565b92915050565b600060208284031215620000f557620000f462000072565b5b60006200010584828501620000c5565b91505092915050565b60805161166b6200013d6000396000818160770152818160ca015281816101820152610205015261166b6000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063394b71cf1461003b5780639eba661914610059575b600080fd5b610043610075565b60405161005091906108d8565b60405180910390f35b610073600480360381019061006e9190610e0c565b610099565b005b7f000000000000000000000000000000000000000000000000000000000000000081565b6100c63330858773ffffffffffffffffffffffffffffffffffffffff16610563909392919063ffffffff16565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c00927846040518263ffffffff1660e01b81526004016101219190610eb2565b6040805180830381865afa15801561013d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101619190610f07565b5090508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000866040518363ffffffff1660e01b81526004016101bf929190610f65565b6020604051808303816000875af11580156101de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102029190610fa3565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b95cac28843030866040518563ffffffff1660e01b81526004016102629493929190611266565b600060405180830381600087803b15801561027c57600080fd5b505af1158015610290573d6000803e3d6000fd5b5050505060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016102cf91906112b2565b602060405180830381865afa1580156102ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031091906112e2565b905060008111610355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034c9061136c565b60405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161039091906112b2565b602060405180830381865afa1580156103ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d191906112e2565b90506000811461045b578673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610416929190610f65565b6020604051808303816000875af1158015610435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104599190610fa3565b505b8273ffffffffffffffffffffffffffffffffffffffff1663095ea7b389846040518363ffffffff1660e01b8152600401610496929190610f65565b6020604051808303816000875af11580156104b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d99190610fa3565b508773ffffffffffffffffffffffffffffffffffffffff16636e553f6583336040518363ffffffff1660e01b815260040161051592919061138c565b6020604051808303816000875af1158015610534573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055891906112e2565b505050505050505050565b6105e6846323b872dd60e01b858585604051602401610584939291906113b5565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506105ec565b50505050565b600061064e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166106b39092919063ffffffff16565b90506000815111156106ae578080602001905181019061066e9190610fa3565b6106ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a49061145e565b60405180910390fd5b5b505050565b60606106c284846000856106cb565b90509392505050565b606082471015610710576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610707906114f0565b60405180910390fd5b610719856107df565b610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074f9061155c565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161078191906115b8565b60006040518083038185875af1925050503d80600081146107be576040519150601f19603f3d011682016040523d82523d6000602084013e6107c3565b606091505b50915091506107d38282866107f2565b92505050949350505050565b600080823b905060008111915050919050565b6060831561080257829050610852565b6000835111156108155782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108499190611613565b60405180910390fd5b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061089e61089961089484610859565b610879565b610859565b9050919050565b60006108b082610883565b9050919050565b60006108c2826108a5565b9050919050565b6108d2816108b7565b82525050565b60006020820190506108ed60008301846108c9565b92915050565b6000604051905090565b600080fd5b600080fd5b600061091282610859565b9050919050565b61092281610907565b811461092d57600080fd5b50565b60008135905061093f81610919565b92915050565b600061095082610907565b9050919050565b61096081610945565b811461096b57600080fd5b50565b60008135905061097d81610957565b92915050565b6000819050919050565b61099681610983565b81146109a157600080fd5b50565b6000813590506109b38161098d565b92915050565b6000819050919050565b6109cc816109b9565b81146109d757600080fd5b50565b6000813590506109e9816109c3565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610a3d826109f4565b810181811067ffffffffffffffff82111715610a5c57610a5b610a05565b5b80604052505050565b6000610a6f6108f3565b9050610a7b8282610a34565b919050565b600080fd5b600080fd5b600067ffffffffffffffff821115610aa557610aa4610a05565b5b602082029050602081019050919050565b600080fd5b6000610ac682610907565b9050919050565b610ad681610abb565b8114610ae157600080fd5b50565b600081359050610af381610acd565b92915050565b6000610b0c610b0784610a8a565b610a65565b90508083825260208201905060208402830185811115610b2f57610b2e610ab6565b5b835b81811015610b585780610b448882610ae4565b845260208401935050602081019050610b31565b5050509392505050565b600082601f830112610b7757610b76610a85565b5b8135610b87848260208601610af9565b91505092915050565b600067ffffffffffffffff821115610bab57610baa610a05565b5b602082029050602081019050919050565b6000610bcf610bca84610b90565b610a65565b90508083825260208201905060208402830185811115610bf257610bf1610ab6565b5b835b81811015610c1b5780610c0788826109a4565b845260208401935050602081019050610bf4565b5050509392505050565b600082601f830112610c3a57610c39610a85565b5b8135610c4a848260208601610bbc565b91505092915050565b600080fd5b600067ffffffffffffffff821115610c7357610c72610a05565b5b610c7c826109f4565b9050602081019050919050565b82818337600083830152505050565b6000610cab610ca684610c58565b610a65565b905082815260208101848484011115610cc757610cc6610c53565b5b610cd2848285610c89565b509392505050565b600082601f830112610cef57610cee610a85565b5b8135610cff848260208601610c98565b91505092915050565b60008115159050919050565b610d1d81610d08565b8114610d2857600080fd5b50565b600081359050610d3a81610d14565b92915050565b600060808284031215610d5657610d556109ef565b5b610d606080610a65565b9050600082013567ffffffffffffffff811115610d8057610d7f610a80565b5b610d8c84828501610b62565b600083015250602082013567ffffffffffffffff811115610db057610daf610a80565b5b610dbc84828501610c25565b602083015250604082013567ffffffffffffffff811115610de057610ddf610a80565b5b610dec84828501610cda565b6040830152506060610e0084828501610d2b565b60608301525092915050565b600080600080600060a08688031215610e2857610e276108fd565b5b6000610e3688828901610930565b9550506020610e478882890161096e565b9450506040610e58888289016109a4565b9350506060610e69888289016109da565b925050608086013567ffffffffffffffff811115610e8a57610e89610902565b5b610e9688828901610d40565b9150509295509295909350565b610eac816109b9565b82525050565b6000602082019050610ec76000830184610ea3565b92915050565b600081519050610edc81610919565b92915050565b60038110610eef57600080fd5b50565b600081519050610f0181610ee2565b92915050565b60008060408385031215610f1e57610f1d6108fd565b5b6000610f2c85828601610ecd565b9250506020610f3d85828601610ef2565b9150509250929050565b610f5081610907565b82525050565b610f5f81610983565b82525050565b6000604082019050610f7a6000830185610f47565b610f876020830184610f56565b9392505050565b600081519050610f9d81610d14565b92915050565b600060208284031215610fb957610fb86108fd565b5b6000610fc784828501610f8e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000611007826108a5565b9050919050565b61101781610ffc565b82525050565b6000611029838361100e565b60208301905092915050565b6000602082019050919050565b600061104d82610fd0565b6110578185610fdb565b935061106283610fec565b8060005b8381101561109357815161107a888261101d565b975061108583611035565b925050600181019050611066565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6110d581610983565b82525050565b60006110e783836110cc565b60208301905092915050565b6000602082019050919050565b600061110b826110a0565b61111581856110ab565b9350611120836110bc565b8060005b8381101561115157815161113888826110db565b9750611143836110f3565b925050600181019050611124565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561119857808201518184015260208101905061117d565b838111156111a7576000848401525b50505050565b60006111b88261115e565b6111c28185611169565b93506111d281856020860161117a565b6111db816109f4565b840191505092915050565b6111ef81610d08565b82525050565b600060808301600083015184820360008601526112128282611042565b9150506020830151848203602086015261122c8282611100565b9150506040830151848203604086015261124682826111ad565b915050606083015161125b60608601826111e6565b508091505092915050565b600060808201905061127b6000830187610ea3565b6112886020830186610f47565b6112956040830185610f47565b81810360608301526112a781846111f5565b905095945050505050565b60006020820190506112c76000830184610f47565b92915050565b6000815190506112dc8161098d565b92915050565b6000602082840312156112f8576112f76108fd565b5b6000611306848285016112cd565b91505092915050565b600082825260208201905092915050565b7f216d696e74000000000000000000000000000000000000000000000000000000600082015250565b600061135660058361130f565b915061136182611320565b602082019050919050565b6000602082019050818103600083015261138581611349565b9050919050565b60006040820190506113a16000830185610f56565b6113ae6020830184610f47565b9392505050565b60006060820190506113ca6000830186610f47565b6113d76020830185610f47565b6113e46040830184610f56565b949350505050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000611448602a8361130f565b9150611453826113ec565b604082019050919050565b600060208201905081810360008301526114778161143b565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b60006114da60268361130f565b91506114e58261147e565b604082019050919050565b60006020820190508181036000830152611509816114cd565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000611546601d8361130f565b915061155182611510565b602082019050919050565b6000602082019050818103600083015261157581611539565b9050919050565b600081905092915050565b60006115928261115e565b61159c818561157c565b93506115ac81856020860161117a565b80840191505092915050565b60006115c48284611587565b915081905092915050565b600081519050919050565b60006115e5826115cf565b6115ef818561130f565b93506115ff81856020860161117a565b611608816109f4565b840191505092915050565b6000602082019050818103600083015261162d81846115da565b90509291505056fea26469706673582212204ca7f3a1bc8a9cb20b901719f17bf3407d8e3b802fe10c8434dac79415dc638e64736f6c634300080b0033000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c8
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063394b71cf1461003b5780639eba661914610059575b600080fd5b610043610075565b60405161005091906108d8565b60405180910390f35b610073600480360381019061006e9190610e0c565b610099565b005b7f000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c881565b6100c63330858773ffffffffffffffffffffffffffffffffffffffff16610563909392919063ffffffff16565b60007f000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c873ffffffffffffffffffffffffffffffffffffffff1663f6c00927846040518263ffffffff1660e01b81526004016101219190610eb2565b6040805180830381865afa15801561013d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101619190610f07565b5090508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c8866040518363ffffffff1660e01b81526004016101bf929190610f65565b6020604051808303816000875af11580156101de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102029190610fa3565b507f000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c873ffffffffffffffffffffffffffffffffffffffff1663b95cac28843030866040518563ffffffff1660e01b81526004016102629493929190611266565b600060405180830381600087803b15801561027c57600080fd5b505af1158015610290573d6000803e3d6000fd5b5050505060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016102cf91906112b2565b602060405180830381865afa1580156102ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031091906112e2565b905060008111610355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034c9061136c565b60405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161039091906112b2565b602060405180830381865afa1580156103ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d191906112e2565b90506000811461045b578673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610416929190610f65565b6020604051808303816000875af1158015610435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104599190610fa3565b505b8273ffffffffffffffffffffffffffffffffffffffff1663095ea7b389846040518363ffffffff1660e01b8152600401610496929190610f65565b6020604051808303816000875af11580156104b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d99190610fa3565b508773ffffffffffffffffffffffffffffffffffffffff16636e553f6583336040518363ffffffff1660e01b815260040161051592919061138c565b6020604051808303816000875af1158015610534573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055891906112e2565b505050505050505050565b6105e6846323b872dd60e01b858585604051602401610584939291906113b5565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506105ec565b50505050565b600061064e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166106b39092919063ffffffff16565b90506000815111156106ae578080602001905181019061066e9190610fa3565b6106ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a49061145e565b60405180910390fd5b5b505050565b60606106c284846000856106cb565b90509392505050565b606082471015610710576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610707906114f0565b60405180910390fd5b610719856107df565b610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074f9061155c565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161078191906115b8565b60006040518083038185875af1925050503d80600081146107be576040519150601f19603f3d011682016040523d82523d6000602084013e6107c3565b606091505b50915091506107d38282866107f2565b92505050949350505050565b600080823b905060008111915050919050565b6060831561080257829050610852565b6000835111156108155782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108499190611613565b60405180910390fd5b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061089e61089961089484610859565b610879565b610859565b9050919050565b60006108b082610883565b9050919050565b60006108c2826108a5565b9050919050565b6108d2816108b7565b82525050565b60006020820190506108ed60008301846108c9565b92915050565b6000604051905090565b600080fd5b600080fd5b600061091282610859565b9050919050565b61092281610907565b811461092d57600080fd5b50565b60008135905061093f81610919565b92915050565b600061095082610907565b9050919050565b61096081610945565b811461096b57600080fd5b50565b60008135905061097d81610957565b92915050565b6000819050919050565b61099681610983565b81146109a157600080fd5b50565b6000813590506109b38161098d565b92915050565b6000819050919050565b6109cc816109b9565b81146109d757600080fd5b50565b6000813590506109e9816109c3565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610a3d826109f4565b810181811067ffffffffffffffff82111715610a5c57610a5b610a05565b5b80604052505050565b6000610a6f6108f3565b9050610a7b8282610a34565b919050565b600080fd5b600080fd5b600067ffffffffffffffff821115610aa557610aa4610a05565b5b602082029050602081019050919050565b600080fd5b6000610ac682610907565b9050919050565b610ad681610abb565b8114610ae157600080fd5b50565b600081359050610af381610acd565b92915050565b6000610b0c610b0784610a8a565b610a65565b90508083825260208201905060208402830185811115610b2f57610b2e610ab6565b5b835b81811015610b585780610b448882610ae4565b845260208401935050602081019050610b31565b5050509392505050565b600082601f830112610b7757610b76610a85565b5b8135610b87848260208601610af9565b91505092915050565b600067ffffffffffffffff821115610bab57610baa610a05565b5b602082029050602081019050919050565b6000610bcf610bca84610b90565b610a65565b90508083825260208201905060208402830185811115610bf257610bf1610ab6565b5b835b81811015610c1b5780610c0788826109a4565b845260208401935050602081019050610bf4565b5050509392505050565b600082601f830112610c3a57610c39610a85565b5b8135610c4a848260208601610bbc565b91505092915050565b600080fd5b600067ffffffffffffffff821115610c7357610c72610a05565b5b610c7c826109f4565b9050602081019050919050565b82818337600083830152505050565b6000610cab610ca684610c58565b610a65565b905082815260208101848484011115610cc757610cc6610c53565b5b610cd2848285610c89565b509392505050565b600082601f830112610cef57610cee610a85565b5b8135610cff848260208601610c98565b91505092915050565b60008115159050919050565b610d1d81610d08565b8114610d2857600080fd5b50565b600081359050610d3a81610d14565b92915050565b600060808284031215610d5657610d556109ef565b5b610d606080610a65565b9050600082013567ffffffffffffffff811115610d8057610d7f610a80565b5b610d8c84828501610b62565b600083015250602082013567ffffffffffffffff811115610db057610daf610a80565b5b610dbc84828501610c25565b602083015250604082013567ffffffffffffffff811115610de057610ddf610a80565b5b610dec84828501610cda565b6040830152506060610e0084828501610d2b565b60608301525092915050565b600080600080600060a08688031215610e2857610e276108fd565b5b6000610e3688828901610930565b9550506020610e478882890161096e565b9450506040610e58888289016109a4565b9350506060610e69888289016109da565b925050608086013567ffffffffffffffff811115610e8a57610e89610902565b5b610e9688828901610d40565b9150509295509295909350565b610eac816109b9565b82525050565b6000602082019050610ec76000830184610ea3565b92915050565b600081519050610edc81610919565b92915050565b60038110610eef57600080fd5b50565b600081519050610f0181610ee2565b92915050565b60008060408385031215610f1e57610f1d6108fd565b5b6000610f2c85828601610ecd565b9250506020610f3d85828601610ef2565b9150509250929050565b610f5081610907565b82525050565b610f5f81610983565b82525050565b6000604082019050610f7a6000830185610f47565b610f876020830184610f56565b9392505050565b600081519050610f9d81610d14565b92915050565b600060208284031215610fb957610fb86108fd565b5b6000610fc784828501610f8e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000611007826108a5565b9050919050565b61101781610ffc565b82525050565b6000611029838361100e565b60208301905092915050565b6000602082019050919050565b600061104d82610fd0565b6110578185610fdb565b935061106283610fec565b8060005b8381101561109357815161107a888261101d565b975061108583611035565b925050600181019050611066565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6110d581610983565b82525050565b60006110e783836110cc565b60208301905092915050565b6000602082019050919050565b600061110b826110a0565b61111581856110ab565b9350611120836110bc565b8060005b8381101561115157815161113888826110db565b9750611143836110f3565b925050600181019050611124565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561119857808201518184015260208101905061117d565b838111156111a7576000848401525b50505050565b60006111b88261115e565b6111c28185611169565b93506111d281856020860161117a565b6111db816109f4565b840191505092915050565b6111ef81610d08565b82525050565b600060808301600083015184820360008601526112128282611042565b9150506020830151848203602086015261122c8282611100565b9150506040830151848203604086015261124682826111ad565b915050606083015161125b60608601826111e6565b508091505092915050565b600060808201905061127b6000830187610ea3565b6112886020830186610f47565b6112956040830185610f47565b81810360608301526112a781846111f5565b905095945050505050565b60006020820190506112c76000830184610f47565b92915050565b6000815190506112dc8161098d565b92915050565b6000602082840312156112f8576112f76108fd565b5b6000611306848285016112cd565b91505092915050565b600082825260208201905092915050565b7f216d696e74000000000000000000000000000000000000000000000000000000600082015250565b600061135660058361130f565b915061136182611320565b602082019050919050565b6000602082019050818103600083015261138581611349565b9050919050565b60006040820190506113a16000830185610f56565b6113ae6020830184610f47565b9392505050565b60006060820190506113ca6000830186610f47565b6113d76020830185610f47565b6113e46040830184610f56565b949350505050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000611448602a8361130f565b9150611453826113ec565b604082019050919050565b600060208201905081810360008301526114778161143b565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b60006114da60268361130f565b91506114e58261147e565b604082019050919050565b60006020820190508181036000830152611509816114cd565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000611546601d8361130f565b915061155182611510565b602082019050919050565b6000602082019050818103600083015261157581611539565b9050919050565b600081905092915050565b60006115928261115e565b61159c818561157c565b93506115ac81856020860161117a565b80840191505092915050565b60006115c48284611587565b915081905092915050565b600081519050919050565b60006115e5826115cf565b6115ef818561130f565b93506115ff81856020860161117a565b611608816109f4565b840191505092915050565b6000602082019050818103600083015261162d81846115da565b90509291505056fea26469706673582212204ca7f3a1bc8a9cb20b901719f17bf3407d8e3b802fe10c8434dac79415dc638e64736f6c634300080b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c8
-----Decoded View---------------
Arg [0] : _bVault (address): 0xBA12222222228d8Ba445958a75a0704d566BF2C8
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c8
Deployed Bytecode Sourcemap
22291:1503:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22367:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22676:1115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22367:38;;;:::o;22676:1115::-;22950:69;22979:10;22999:4;23006:12;22950:11;:28;;;;:69;;;;;;:::i;:::-;23073:12;23091:6;:14;;;23106:15;23091:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23072:50;;;23135:11;:19;;;23163:6;23172:12;23135:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23196:6;:15;;;23212;23237:4;23252;23259:8;23196:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23281:14;23305:4;23298:22;;;23329:4;23298:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23281:54;;23363:1;23354:6;:10;23346:28;;;;;;;;;;;;:::i;:::-;;;;;;;;;23387:21;23411:11;:21;;;23441:4;23411:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23387:60;;23479:1;23462:13;:18;23458:153;;23552:11;:20;;;23573:10;23585:13;23552:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23458:153;23668:4;23661:20;;;23682:18;23702:6;23661:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23736:18;23720:43;;;23764:6;23772:10;23720:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22903:888;;;22676:1115;;;;;:::o;12089:248::-;12233:96;12253:5;12283:27;;;12312:4;12318:2;12322:5;12260:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12233:19;:96::i;:::-;12089:248;;;;:::o;14443:716::-;14867:23;14893:69;14921:4;14893:69;;;;;;;;;;;;;;;;;14901:5;14893:27;;;;:69;;;;;:::i;:::-;14867:95;;14997:1;14977:10;:17;:21;14973:179;;;15074:10;15063:30;;;;;;;;;;;;:::i;:::-;15055:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14973:179;14513:646;14443:716;;:::o;6640:229::-;6777:12;6809:52;6831:6;6839:4;6845:1;6848:12;6809:21;:52::i;:::-;6802:59;;6640:229;;;;;:::o;7760:510::-;7930:12;7988:5;7963:21;:30;;7955:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;8055:18;8066:6;8055:10;:18::i;:::-;8047:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8121:12;8135:23;8162:6;:11;;8181:5;8188:4;8162:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8120:73;;;;8211:51;8228:7;8237:10;8249:12;8211:16;:51::i;:::-;8204:58;;;;7760:510;;;;;;:::o;3834:387::-;3894:4;4102:12;4169:7;4157:20;4149:28;;4212:1;4205:4;:8;4198:15;;;3834:387;;;:::o;10446:712::-;10596:12;10625:7;10621:530;;;10656:10;10649:17;;;;10621:530;10790:1;10770:10;:17;:21;10766:374;;;10968:10;10962:17;11029:15;11016:10;11012:2;11008:19;11001:44;10766:374;11111:12;11104:20;;;;;;;;;;;:::i;:::-;;;;;;;;10446:712;;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:60::-;167:3;188:5;181:12;;139:60;;;:::o;205:142::-;255:9;288:53;306:34;315:24;333:5;315:24;:::i;:::-;306:34;:::i;:::-;288:53;:::i;:::-;275:66;;205:142;;;:::o;353:126::-;403:9;436:37;467:5;436:37;:::i;:::-;423:50;;353:126;;;:::o;485:148::-;557:9;590:37;621:5;590:37;:::i;:::-;577:50;;485:148;;;:::o;639:175::-;748:59;801:5;748:59;:::i;:::-;743:3;736:72;639:175;;:::o;820:266::-;935:4;973:2;962:9;958:18;950:26;;986:93;1076:1;1065:9;1061:17;1052:6;986:93;:::i;:::-;820:266;;;;:::o;1092:75::-;1125:6;1158:2;1152:9;1142:19;;1092:75;:::o;1173:117::-;1282:1;1279;1272:12;1296:117;1405:1;1402;1395:12;1419:96;1456:7;1485:24;1503:5;1485:24;:::i;:::-;1474:35;;1419:96;;;:::o;1521:122::-;1594:24;1612:5;1594:24;:::i;:::-;1587:5;1584:35;1574:63;;1633:1;1630;1623:12;1574:63;1521:122;:::o;1649:139::-;1695:5;1733:6;1720:20;1711:29;;1749:33;1776:5;1749:33;:::i;:::-;1649:139;;;;:::o;1794:109::-;1844:7;1873:24;1891:5;1873:24;:::i;:::-;1862:35;;1794:109;;;:::o;1909:148::-;1995:37;2026:5;1995:37;:::i;:::-;1988:5;1985:48;1975:76;;2047:1;2044;2037:12;1975:76;1909:148;:::o;2063:165::-;2122:5;2160:6;2147:20;2138:29;;2176:46;2216:5;2176:46;:::i;:::-;2063:165;;;;:::o;2234:77::-;2271:7;2300:5;2289:16;;2234:77;;;:::o;2317:122::-;2390:24;2408:5;2390:24;:::i;:::-;2383:5;2380:35;2370:63;;2429:1;2426;2419:12;2370:63;2317:122;:::o;2445:139::-;2491:5;2529:6;2516:20;2507:29;;2545:33;2572:5;2545:33;:::i;:::-;2445:139;;;;:::o;2590:77::-;2627:7;2656:5;2645:16;;2590:77;;;:::o;2673:122::-;2746:24;2764:5;2746:24;:::i;:::-;2739:5;2736:35;2726:63;;2785:1;2782;2775:12;2726:63;2673:122;:::o;2801:139::-;2847:5;2885:6;2872:20;2863:29;;2901:33;2928:5;2901:33;:::i;:::-;2801:139;;;;:::o;2946:117::-;3055:1;3052;3045:12;3069:102;3110:6;3161:2;3157:7;3152:2;3145:5;3141:14;3137:28;3127:38;;3069:102;;;:::o;3177:180::-;3225:77;3222:1;3215:88;3322:4;3319:1;3312:15;3346:4;3343:1;3336:15;3363:281;3446:27;3468:4;3446:27;:::i;:::-;3438:6;3434:40;3576:6;3564:10;3561:22;3540:18;3528:10;3525:34;3522:62;3519:88;;;3587:18;;:::i;:::-;3519:88;3627:10;3623:2;3616:22;3406:238;3363:281;;:::o;3650:129::-;3684:6;3711:20;;:::i;:::-;3701:30;;3740:33;3768:4;3760:6;3740:33;:::i;:::-;3650:129;;;:::o;3785:117::-;3894:1;3891;3884:12;3908:117;4017:1;4014;4007:12;4031:325;4122:4;4212:18;4204:6;4201:30;4198:56;;;4234:18;;:::i;:::-;4198:56;4284:4;4276:6;4272:17;4264:25;;4344:4;4338;4334:15;4326:23;;4031:325;;;:::o;4362:117::-;4471:1;4468;4461:12;4485:110;4536:7;4565:24;4583:5;4565:24;:::i;:::-;4554:35;;4485:110;;;:::o;4601:150::-;4688:38;4720:5;4688:38;:::i;:::-;4681:5;4678:49;4668:77;;4741:1;4738;4731:12;4668:77;4601:150;:::o;4757:167::-;4817:5;4855:6;4842:20;4833:29;;4871:47;4912:5;4871:47;:::i;:::-;4757:167;;;;:::o;4955:752::-;5065:5;5090:95;5106:78;5177:6;5106:78;:::i;:::-;5090:95;:::i;:::-;5081:104;;5205:5;5234:6;5227:5;5220:21;5268:4;5261:5;5257:16;5250:23;;5321:4;5313:6;5309:17;5301:6;5297:30;5350:3;5342:6;5339:15;5336:122;;;5369:79;;:::i;:::-;5336:122;5484:6;5467:234;5501:6;5496:3;5493:15;5467:234;;;5576:3;5605:51;5652:3;5640:10;5605:51;:::i;:::-;5600:3;5593:64;5686:4;5681:3;5677:14;5670:21;;5543:158;5527:4;5522:3;5518:14;5511:21;;5467:234;;;5471:21;5071:636;;4955:752;;;;;:::o;5738:398::-;5823:5;5872:3;5865:4;5857:6;5853:17;5849:27;5839:122;;5880:79;;:::i;:::-;5839:122;5997:6;5984:20;6022:108;6126:3;6118:6;6111:4;6103:6;6099:17;6022:108;:::i;:::-;6013:117;;5829:307;5738:398;;;;:::o;6142:311::-;6219:4;6309:18;6301:6;6298:30;6295:56;;;6331:18;;:::i;:::-;6295:56;6381:4;6373:6;6369:17;6361:25;;6441:4;6435;6431:15;6423:23;;6142:311;;;:::o;6476:710::-;6572:5;6597:81;6613:64;6670:6;6613:64;:::i;:::-;6597:81;:::i;:::-;6588:90;;6698:5;6727:6;6720:5;6713:21;6761:4;6754:5;6750:16;6743:23;;6814:4;6806:6;6802:17;6794:6;6790:30;6843:3;6835:6;6832:15;6829:122;;;6862:79;;:::i;:::-;6829:122;6977:6;6960:220;6994:6;6989:3;6986:15;6960:220;;;7069:3;7098:37;7131:3;7119:10;7098:37;:::i;:::-;7093:3;7086:50;7165:4;7160:3;7156:14;7149:21;;7036:144;7020:4;7015:3;7011:14;7004:21;;6960:220;;;6964:21;6578:608;;6476:710;;;;;:::o;7209:370::-;7280:5;7329:3;7322:4;7314:6;7310:17;7306:27;7296:122;;7337:79;;:::i;:::-;7296:122;7454:6;7441:20;7479:94;7569:3;7561:6;7554:4;7546:6;7542:17;7479:94;:::i;:::-;7470:103;;7286:293;7209:370;;;;:::o;7585:117::-;7694:1;7691;7684:12;7708:307;7769:4;7859:18;7851:6;7848:30;7845:56;;;7881:18;;:::i;:::-;7845:56;7919:29;7941:6;7919:29;:::i;:::-;7911:37;;8003:4;7997;7993:15;7985:23;;7708:307;;;:::o;8021:154::-;8105:6;8100:3;8095;8082:30;8167:1;8158:6;8153:3;8149:16;8142:27;8021:154;;;:::o;8181:410::-;8258:5;8283:65;8299:48;8340:6;8299:48;:::i;:::-;8283:65;:::i;:::-;8274:74;;8371:6;8364:5;8357:21;8409:4;8402:5;8398:16;8447:3;8438:6;8433:3;8429:16;8426:25;8423:112;;;8454:79;;:::i;:::-;8423:112;8544:41;8578:6;8573:3;8568;8544:41;:::i;:::-;8264:327;8181:410;;;;;:::o;8610:338::-;8665:5;8714:3;8707:4;8699:6;8695:17;8691:27;8681:122;;8722:79;;:::i;:::-;8681:122;8839:6;8826:20;8864:78;8938:3;8930:6;8923:4;8915:6;8911:17;8864:78;:::i;:::-;8855:87;;8671:277;8610:338;;;;:::o;8954:90::-;8988:7;9031:5;9024:13;9017:21;9006:32;;8954:90;;;:::o;9050:116::-;9120:21;9135:5;9120:21;:::i;:::-;9113:5;9110:32;9100:60;;9156:1;9153;9146:12;9100:60;9050:116;:::o;9172:133::-;9215:5;9253:6;9240:20;9231:29;;9269:30;9293:5;9269:30;:::i;:::-;9172:133;;;;:::o;9356:1482::-;9437:5;9481:4;9469:9;9464:3;9460:19;9456:30;9453:117;;;9489:79;;:::i;:::-;9453:117;9588:21;9604:4;9588:21;:::i;:::-;9579:30;;9698:1;9687:9;9683:17;9670:31;9728:18;9720:6;9717:30;9714:117;;;9750:79;;:::i;:::-;9714:117;9870:88;9954:3;9945:6;9934:9;9930:22;9870:88;:::i;:::-;9863:4;9856:5;9852:16;9845:114;9619:351;10065:2;10054:9;10050:18;10037:32;10096:18;10088:6;10085:30;10082:117;;;10118:79;;:::i;:::-;10082:117;10238:74;10308:3;10299:6;10288:9;10284:22;10238:74;:::i;:::-;10231:4;10224:5;10220:16;10213:100;9980:344;10415:2;10404:9;10400:18;10387:32;10446:18;10438:6;10435:30;10432:117;;;10468:79;;:::i;:::-;10432:117;10588:58;10642:3;10633:6;10622:9;10618:22;10588:58;:::i;:::-;10581:4;10574:5;10570:16;10563:84;10334:324;10732:2;10773:46;10815:3;10806:6;10795:9;10791:22;10773:46;:::i;:::-;10766:4;10759:5;10755:16;10748:72;10668:163;9356:1482;;;;:::o;10844:1161::-;10984:6;10992;11000;11008;11016;11065:3;11053:9;11044:7;11040:23;11036:33;11033:120;;;11072:79;;:::i;:::-;11033:120;11192:1;11217:53;11262:7;11253:6;11242:9;11238:22;11217:53;:::i;:::-;11207:63;;11163:117;11319:2;11345:66;11403:7;11394:6;11383:9;11379:22;11345:66;:::i;:::-;11335:76;;11290:131;11460:2;11486:53;11531:7;11522:6;11511:9;11507:22;11486:53;:::i;:::-;11476:63;;11431:118;11588:2;11614:53;11659:7;11650:6;11639:9;11635:22;11614:53;:::i;:::-;11604:63;;11559:118;11744:3;11733:9;11729:19;11716:33;11776:18;11768:6;11765:30;11762:117;;;11798:79;;:::i;:::-;11762:117;11903:85;11980:7;11971:6;11960:9;11956:22;11903:85;:::i;:::-;11893:95;;11687:311;10844:1161;;;;;;;;:::o;12011:118::-;12098:24;12116:5;12098:24;:::i;:::-;12093:3;12086:37;12011:118;;:::o;12135:222::-;12228:4;12266:2;12255:9;12251:18;12243:26;;12279:71;12347:1;12336:9;12332:17;12323:6;12279:71;:::i;:::-;12135:222;;;;:::o;12363:143::-;12420:5;12451:6;12445:13;12436:22;;12467:33;12494:5;12467:33;:::i;:::-;12363:143;;;;:::o;12512:121::-;12607:1;12600:5;12597:12;12587:40;;12623:1;12620;12613:12;12587:40;12512:121;:::o;12639:187::-;12718:5;12749:6;12743:13;12734:22;;12765:55;12814:5;12765:55;:::i;:::-;12639:187;;;;:::o;12832:551::-;12933:6;12941;12990:2;12978:9;12969:7;12965:23;12961:32;12958:119;;;12996:79;;:::i;:::-;12958:119;13116:1;13141:64;13197:7;13188:6;13177:9;13173:22;13141:64;:::i;:::-;13131:74;;13087:128;13254:2;13280:86;13358:7;13349:6;13338:9;13334:22;13280:86;:::i;:::-;13270:96;;13225:151;12832:551;;;;;:::o;13389:118::-;13476:24;13494:5;13476:24;:::i;:::-;13471:3;13464:37;13389:118;;:::o;13513:::-;13600:24;13618:5;13600:24;:::i;:::-;13595:3;13588:37;13513:118;;:::o;13637:332::-;13758:4;13796:2;13785:9;13781:18;13773:26;;13809:71;13877:1;13866:9;13862:17;13853:6;13809:71;:::i;:::-;13890:72;13958:2;13947:9;13943:18;13934:6;13890:72;:::i;:::-;13637:332;;;;;:::o;13975:137::-;14029:5;14060:6;14054:13;14045:22;;14076:30;14100:5;14076:30;:::i;:::-;13975:137;;;;:::o;14118:345::-;14185:6;14234:2;14222:9;14213:7;14209:23;14205:32;14202:119;;;14240:79;;:::i;:::-;14202:119;14360:1;14385:61;14438:7;14429:6;14418:9;14414:22;14385:61;:::i;:::-;14375:71;;14331:125;14118:345;;;;:::o;14469:128::-;14550:6;14584:5;14578:12;14568:22;;14469:128;;;:::o;14603:174::-;14692:11;14726:6;14721:3;14714:19;14766:4;14761:3;14757:14;14742:29;;14603:174;;;;:::o;14783:146::-;14864:4;14887:3;14879:11;;14917:4;14912:3;14908:14;14900:22;;14783:146;;;:::o;14935:140::-;14999:9;15032:37;15063:5;15032:37;:::i;:::-;15019:50;;14935:140;;;:::o;15081:149::-;15172:51;15217:5;15172:51;:::i;:::-;15167:3;15160:64;15081:149;;:::o;15236:207::-;15319:10;15340:60;15396:3;15388:6;15340:60;:::i;:::-;15432:4;15427:3;15423:14;15409:28;;15236:207;;;;:::o;15449:127::-;15533:4;15565;15560:3;15556:14;15548:22;;15449:127;;;:::o;15620:782::-;15743:3;15772:68;15834:5;15772:68;:::i;:::-;15856:76;15925:6;15920:3;15856:76;:::i;:::-;15849:83;;15956:70;16020:5;15956:70;:::i;:::-;16049:7;16080:1;16065:312;16090:6;16087:1;16084:13;16065:312;;;16166:6;16160:13;16193:77;16266:3;16251:13;16193:77;:::i;:::-;16186:84;;16293:74;16360:6;16293:74;:::i;:::-;16283:84;;16125:252;16112:1;16109;16105:9;16100:14;;16065:312;;;16069:14;16393:3;16386:10;;15748:654;;;15620:782;;;;:::o;16408:114::-;16475:6;16509:5;16503:12;16493:22;;16408:114;;;:::o;16528:174::-;16617:11;16651:6;16646:3;16639:19;16691:4;16686:3;16682:14;16667:29;;16528:174;;;;:::o;16708:132::-;16775:4;16798:3;16790:11;;16828:4;16823:3;16819:14;16811:22;;16708:132;;;:::o;16846:108::-;16923:24;16941:5;16923:24;:::i;:::-;16918:3;16911:37;16846:108;;:::o;16960:179::-;17029:10;17050:46;17092:3;17084:6;17050:46;:::i;:::-;17128:4;17123:3;17119:14;17105:28;;16960:179;;;;:::o;17145:113::-;17215:4;17247;17242:3;17238:14;17230:22;;17145:113;;;:::o;17294:712::-;17403:3;17432:54;17480:5;17432:54;:::i;:::-;17502:76;17571:6;17566:3;17502:76;:::i;:::-;17495:83;;17602:56;17652:5;17602:56;:::i;:::-;17681:7;17712:1;17697:284;17722:6;17719:1;17716:13;17697:284;;;17798:6;17792:13;17825:63;17884:3;17869:13;17825:63;:::i;:::-;17818:70;;17911:60;17964:6;17911:60;:::i;:::-;17901:70;;17757:224;17744:1;17741;17737:9;17732:14;;17697:284;;;17701:14;17997:3;17990:10;;17408:598;;;17294:712;;;;:::o;18012:98::-;18063:6;18097:5;18091:12;18081:22;;18012:98;;;:::o;18116:158::-;18189:11;18223:6;18218:3;18211:19;18263:4;18258:3;18254:14;18239:29;;18116:158;;;;:::o;18280:307::-;18348:1;18358:113;18372:6;18369:1;18366:13;18358:113;;;18457:1;18452:3;18448:11;18442:18;18438:1;18433:3;18429:11;18422:39;18394:2;18391:1;18387:10;18382:15;;18358:113;;;18489:6;18486:1;18483:13;18480:101;;;18569:1;18560:6;18555:3;18551:16;18544:27;18480:101;18329:258;18280:307;;;:::o;18593:340::-;18669:3;18697:38;18729:5;18697:38;:::i;:::-;18751:60;18804:6;18799:3;18751:60;:::i;:::-;18744:67;;18820:52;18865:6;18860:3;18853:4;18846:5;18842:16;18820:52;:::i;:::-;18897:29;18919:6;18897:29;:::i;:::-;18892:3;18888:39;18881:46;;18673:260;18593:340;;;;:::o;18939:99::-;19010:21;19025:5;19010:21;:::i;:::-;19005:3;18998:34;18939:99;;:::o;19130:1205::-;19263:3;19299:4;19294:3;19290:14;19388:4;19381:5;19377:16;19371:23;19441:3;19435:4;19431:14;19424:4;19419:3;19415:14;19408:38;19467:117;19579:4;19565:12;19467:117;:::i;:::-;19459:125;;19314:281;19685:4;19678:5;19674:16;19668:23;19738:3;19732:4;19728:14;19721:4;19716:3;19712:14;19705:38;19764:103;19862:4;19848:12;19764:103;:::i;:::-;19756:111;;19605:273;19964:4;19957:5;19953:16;19947:23;20017:3;20011:4;20007:14;20000:4;19995:3;19991:14;19984:38;20043:71;20109:4;20095:12;20043:71;:::i;:::-;20035:79;;19888:237;20222:4;20215:5;20211:16;20205:23;20241:57;20292:4;20287:3;20283:14;20269:12;20241:57;:::i;:::-;20135:173;20325:4;20318:11;;19268:1067;19130:1205;;;;:::o;20341:732::-;20582:4;20620:3;20609:9;20605:19;20597:27;;20634:71;20702:1;20691:9;20687:17;20678:6;20634:71;:::i;:::-;20715:72;20783:2;20772:9;20768:18;20759:6;20715:72;:::i;:::-;20797;20865:2;20854:9;20850:18;20841:6;20797:72;:::i;:::-;20916:9;20910:4;20906:20;20901:2;20890:9;20886:18;20879:48;20944:122;21061:4;21052:6;20944:122;:::i;:::-;20936:130;;20341:732;;;;;;;:::o;21079:222::-;21172:4;21210:2;21199:9;21195:18;21187:26;;21223:71;21291:1;21280:9;21276:17;21267:6;21223:71;:::i;:::-;21079:222;;;;:::o;21307:143::-;21364:5;21395:6;21389:13;21380:22;;21411:33;21438:5;21411:33;:::i;:::-;21307:143;;;;:::o;21456:351::-;21526:6;21575:2;21563:9;21554:7;21550:23;21546:32;21543:119;;;21581:79;;:::i;:::-;21543:119;21701:1;21726:64;21782:7;21773:6;21762:9;21758:22;21726:64;:::i;:::-;21716:74;;21672:128;21456:351;;;;:::o;21813:169::-;21897:11;21931:6;21926:3;21919:19;21971:4;21966:3;21962:14;21947:29;;21813:169;;;;:::o;21988:155::-;22128:7;22124:1;22116:6;22112:14;22105:31;21988:155;:::o;22149:365::-;22291:3;22312:66;22376:1;22371:3;22312:66;:::i;:::-;22305:73;;22387:93;22476:3;22387:93;:::i;:::-;22505:2;22500:3;22496:12;22489:19;;22149:365;;;:::o;22520:419::-;22686:4;22724:2;22713:9;22709:18;22701:26;;22773:9;22767:4;22763:20;22759:1;22748:9;22744:17;22737:47;22801:131;22927:4;22801:131;:::i;:::-;22793:139;;22520:419;;;:::o;22945:332::-;23066:4;23104:2;23093:9;23089:18;23081:26;;23117:71;23185:1;23174:9;23170:17;23161:6;23117:71;:::i;:::-;23198:72;23266:2;23255:9;23251:18;23242:6;23198:72;:::i;:::-;22945:332;;;;;:::o;23283:442::-;23432:4;23470:2;23459:9;23455:18;23447:26;;23483:71;23551:1;23540:9;23536:17;23527:6;23483:71;:::i;:::-;23564:72;23632:2;23621:9;23617:18;23608:6;23564:72;:::i;:::-;23646;23714:2;23703:9;23699:18;23690:6;23646:72;:::i;:::-;23283:442;;;;;;:::o;23731:229::-;23871:34;23867:1;23859:6;23855:14;23848:58;23940:12;23935:2;23927:6;23923:15;23916:37;23731:229;:::o;23966:366::-;24108:3;24129:67;24193:2;24188:3;24129:67;:::i;:::-;24122:74;;24205:93;24294:3;24205:93;:::i;:::-;24323:2;24318:3;24314:12;24307:19;;23966:366;;;:::o;24338:419::-;24504:4;24542:2;24531:9;24527:18;24519:26;;24591:9;24585:4;24581:20;24577:1;24566:9;24562:17;24555:47;24619:131;24745:4;24619:131;:::i;:::-;24611:139;;24338:419;;;:::o;24763:225::-;24903:34;24899:1;24891:6;24887:14;24880:58;24972:8;24967:2;24959:6;24955:15;24948:33;24763:225;:::o;24994:366::-;25136:3;25157:67;25221:2;25216:3;25157:67;:::i;:::-;25150:74;;25233:93;25322:3;25233:93;:::i;:::-;25351:2;25346:3;25342:12;25335:19;;24994:366;;;:::o;25366:419::-;25532:4;25570:2;25559:9;25555:18;25547:26;;25619:9;25613:4;25609:20;25605:1;25594:9;25590:17;25583:47;25647:131;25773:4;25647:131;:::i;:::-;25639:139;;25366:419;;;:::o;25791:179::-;25931:31;25927:1;25919:6;25915:14;25908:55;25791:179;:::o;25976:366::-;26118:3;26139:67;26203:2;26198:3;26139:67;:::i;:::-;26132:74;;26215:93;26304:3;26215:93;:::i;:::-;26333:2;26328:3;26324:12;26317:19;;25976:366;;;:::o;26348:419::-;26514:4;26552:2;26541:9;26537:18;26529:26;;26601:9;26595:4;26591:20;26587:1;26576:9;26572:17;26565:47;26629:131;26755:4;26629:131;:::i;:::-;26621:139;;26348:419;;;:::o;26773:147::-;26874:11;26911:3;26896:18;;26773:147;;;;:::o;26926:373::-;27030:3;27058:38;27090:5;27058:38;:::i;:::-;27112:88;27193:6;27188:3;27112:88;:::i;:::-;27105:95;;27209:52;27254:6;27249:3;27242:4;27235:5;27231:16;27209:52;:::i;:::-;27286:6;27281:3;27277:16;27270:23;;27034:265;26926:373;;;;:::o;27305:271::-;27435:3;27457:93;27546:3;27537:6;27457:93;:::i;:::-;27450:100;;27567:3;27560:10;;27305:271;;;;:::o;27582:99::-;27634:6;27668:5;27662:12;27652:22;;27582:99;;;:::o;27687:364::-;27775:3;27803:39;27836:5;27803:39;:::i;:::-;27858:71;27922:6;27917:3;27858:71;:::i;:::-;27851:78;;27938:52;27983:6;27978:3;27971:4;27964:5;27960:16;27938:52;:::i;:::-;28015:29;28037:6;28015:29;:::i;:::-;28010:3;28006:39;27999:46;;27779:272;27687:364;;;;:::o;28057:313::-;28170:4;28208:2;28197:9;28193:18;28185:26;;28257:9;28251:4;28247:20;28243:1;28232:9;28228:17;28221:47;28285:78;28358:4;28349:6;28285:78;:::i;:::-;28277:86;;28057:313;;;;:::o
Swarm Source
ipfs://4ca7f3a1bc8a9cb20b901719f17bf3407d8e3b802fe10c8434dac79415dc638e
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.